shithub: 9ferno

ref: caef73363f896a1405ce6b9b6435f91e47a9b188

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,""
generate desc for ref Sys->FD
generate desc for ref Sys->FD
	desc	$-1,8,"80"
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 .b2 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 .b2 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 .b2 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b2 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 .b2 ref Sys->FD ref 1
88: local .b3 big 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 .b2 type ref Sys->FD offset 80 (d->offset=80 start=0) returns 80
descmap .b3 type big offset 88 (d->offset=88 start=0) returns -1
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
generate desc for ref Sys->FD
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 .b6 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 .b6 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 .b6 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b6 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 .b6 ref Sys->FD ref 1
96: local .b7 big 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 .b6 type ref Sys->FD offset 88 (d->offset=88 start=0) returns 88
descmap .b7 type big offset 96 (d->offset=96 start=0) returns -1
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
generate desc for ref Sys->FD
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 .b17 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 .b17 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 .b17 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b17 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
generate desc for ref Sys->FD
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 .b17 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 .b17 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 .b17 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b17 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 .b17 ref Sys->FD ref 2
176: local .t12 string ref 1
184: local .t15 string ref 1
192: 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 .b17 type ref Sys->FD offset 168 (d->offset=168 start=0) returns 168
descmap .t12 type string offset 176 (d->offset=176 start=0) returns 176
descmap .t15 type string offset 184 (d->offset=184 start=0) returns 184
descmap .t16 type list of string offset 192 (d->offset=192 start=0) returns 192
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 .b18 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 .b18 big 0 0
    const (64) int 6 0
ecom: 
const  string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b18 big 0 0
    const (72) int 6 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
fn: parse
64: argument s string ref 1
72: local .b18 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 .b18 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 .b19 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
generate desc for ref Context
generate desc for ref Context
	desc	$-1,8,"80"
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 .b20 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 .b21 big 0 0
    const (64) int 6 0
ecom: 
name .b20 ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b19 big 0 0
    const (64) int 6 0
ecom: 
= ref Context 10 1
  name .b20 ref Context 0 0
  name nil ref Context 1 0
ecom: 
name nil ref Context 1 0
ecom to: 
name .b20 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 .b19 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b20 ref Listnode 0 0
generate desc for ref Listnode
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 .b20 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 .b20 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 .b20 ref Listnode 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t22 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b20 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b20 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t22 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 .t22 list of ref Listnode 0 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b19 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 .b21 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 .b19 big ref 3
96: local .b20 ref Context ref 3
104: local n ref Node ref 3
112: local err string ref 3
120: local .b21 big ref 2
128: local .t22 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 .b19 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b20 type ref Context offset 96 (d->offset=96 start=0) returns 96
descmap n type ref Node offset 104 (d->offset=104 start=0) returns 104
descmap err type string offset 112 (d->offset=112 start=0) returns 112
descmap .b21 type big offset 120 (d->offset=120 start=0) returns -1
descmap .t22 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 104 (d->offset=104 start=0) returns 104
descmap err type string offset 112 (d->offset=112 start=0) returns 112
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
generate desc for ref Context
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 .b24 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 .b25 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 .t26 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 .b25 big 0 0
    const (64) int 6 0
ecom: 
name .b24 ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b23 big 0 0
    const (64) int 6 0
ecom: 
= ref Context 10 1
  name .b24 ref Context 0 0
  name nil ref Context 1 0
ecom: 
name nil ref Context 1 0
ecom to: 
name .b24 ref Context 0 0
ecom: 
name .t26 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b23 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t26 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 .t26 list of ref Listnode 0 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b23 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 .b25 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 .b25 big ref 3
96: local .b23 big ref 2
104: local .b24 ref Context ref 1
112: local .t26 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 .b25 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b23 type big offset 96 (d->offset=96 start=0) returns -1
descmap .b24 type ref Context offset 104 (d->offset=104 start=0) returns 104
descmap .t26 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 .b27 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 .b27 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 .b27 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 .b27 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 .b28 big 0 0
    const (64) int 6 0
ecom: 
const OREAD (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b28 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 .b28 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 .b28 big 0 0
    const (72) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b28 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 .b28 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 .t29 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 .b30 big 0 0
    const (64) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b30 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 .b28 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 .b28 big 0 0
    const (72) int 6 0
ecom: 
name .t29 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b28 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t29 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t29 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 .b28 big ref 3
104: local fd ref Sys->FD ref 3
112: local .b30 big ref 1
120: local .t29 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 .b28 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 .b30 type big offset 112 (d->offset=112 start=0) returns -1
descmap .t29 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 .b31 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 .t32 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 .b33 big 0 0
    const (64) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t34 list of string 0 0
ecom: 
= list of string 10 1
  name .t34 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t34 list of string 0 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b31 big 0 0
    const (64) int 6 0
ecom: 
const 0 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b31 big 0 0
    const (72) int 6 0
ecom: 
name .t32 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b31 big 0 0
    const (80) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t32 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 .t32 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 .b33 big 0 0
    const (64) int 6 0
ecom: 
const * string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b33 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 .b33 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 .b33 big 0 0
    const (64) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b33 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 .t34 list of string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t34 list of string 0 0
ecom: 
= list of string 10 1
  name .t34 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t34 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
generate desc for ref Localenv
generate desc for ref Localenv
	desc	$-1,8,"80"
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 .b35 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
generate desc for ref Environment
generate desc for ref Environment
	desc	$-1,8,"80"
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b35 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b35 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b35 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 .t34 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 .b31 big 0 0
    const (64) int 6 0
ecom: 
const prompt string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b31 big 0 0
    const (72) int 6 0
ecom: 
name .t34 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b33 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t34 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 .t34 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 .t34 list of string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t34 list of string 0 0
ecom: 
= list of string 10 1
  name .t34 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t34 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 .t36 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
generate desc for ref Sys->FD
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 .b35 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b31 big 0 0
    const (64) int 6 0
ecom: 
name .b35 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b33 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .b35 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b35 ref Sys->FD 0 0
ecom: 
const %s string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b33 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 .b33 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 .t34 list of string 0 0
ecom: 
= list of string 10 1
  name .t34 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t34 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 .t34 string 0 0
ecom: 
:: list of string 10 1
  const  string 1 0
  name nil polymorphic type 1 0
ecom to: 
name .t32 list of string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t32 list of string 0 0
ecom: 
= string 10 1
  name .t34 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t34 string 0 0
ecom: 
= list of string 10 1
  name .t32 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t32 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 .b33 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 .b33 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 .t34 list of string 0 0
ecom: 
= list of string 10 1
  name .t34 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t34 list of string 0 0
ecom: 
! int 10 1
  name interactive int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b33 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 .t36 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
generate desc for ref Sys->FD
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 .b35 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b31 big 0 0
    const (64) int 6 0
ecom: 
name .b35 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b33 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .b35 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b35 ref Sys->FD 0 0
ecom: 
const sh: %s
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b33 big 0 0
    const (72) int 6 0
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b33 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 .b33 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 .b33 big 0 0
    const (72) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b33 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 .b33 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 .b33 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 .b33 big 0 0
    const (72) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b33 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 .t34 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b33 big 0 0
    const (64) int 6 0
ecom: 
name laststatus string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b33 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t34 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t34 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 .t36 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
generate desc for ref Localenv
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 .b35 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b35 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b35 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b35 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 .t34 string 0 0
ecom: 
= string 10 1
  name .t34 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t34 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 .b33 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 .b33 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 .t36 int ref 1
112: local .b33 big ref 13
120: local prompt list of string ref 9
128: local laststatus string ref 7
136: local .b35 ref Localenv ref 6
144: local .b31 big ref 5
152: local n ref Node ref 4
160: local err string ref 3
168: local lex ref YYLEX ref 3
176: local .t32 list of ref Listnode ref 1
184: local .t34 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 .t36 type int offset 108 (d->offset=108 start=0) returns -1
descmap .b33 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 .b35 type ref Localenv offset 136 (d->offset=136 start=0) returns 136
descmap .b31 type big offset 144 (d->offset=144 start=0) returns -1
descmap n type ref Node offset 152 (d->offset=152 start=0) returns 152
descmap err type string offset 160 (d->offset=160 start=0) returns 160
descmap lex type ref YYLEX offset 168 (d->offset=168 start=0) returns 168
descmap .t32 type list of ref Listnode offset 176 (d->offset=176 start=0) returns 176
descmap .t34 type list of string offset 184 (d->offset=184 start=0) returns 184
generate desc for .ex1
descmap offset 0
descmap n type ref Node offset 152 (d->offset=152 start=0) returns 152
descmap err type string offset 160 (d->offset=160 start=0) returns 160
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 168 (d->offset=168 start=0) returns 168
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 .b37 big 0 0
ecom: 
const does not exist string 1 0
ecom to: 
* string 8 0
  name .b37 big 0 0
ecom: 
indx big 10 0
  name errs array of string 0 0
  const (1) int 6 0
ecom to: 
name .b37 big 0 0
ecom: 
const directory entry not found string 1 0
ecom to: 
* string 8 0
  name .b37 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 .t38 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 .b37 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 .t38 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 .t39 string 0 0
ecom: 
len int 10 1
  name e string 0 0
ecom to: 
name .t38 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 .t40 int 0 0
ecom: 
len int 10 1
  name e string 0 0
ecom to: 
name .t40 int 0 0
ecom: 
name e string 0 0
ecom to: 
name .t39 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 .t41 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 .b37 big 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: 
= string 10 1
  name .t41 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t41 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 .t38 int ref 1
84: local .t40 int ref 1
88: local errs array of string ref 4
96: local .b37 big ref 3
104: local .t39 string ref 1
112: local .t41 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 .t38 type int offset 80 (d->offset=80 start=0) returns -1
descmap .t40 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 .b37 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t39 type string offset 104 (d->offset=104 start=0) returns 104
descmap .t41 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 .b42 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 .b42 big 0 0
    const (72) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b42 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 .t43 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
generate desc for ref Localenv
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 .b44 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b44 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b44 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b44 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 .t45 string 0 0
ecom: 
= string 10 1
  name .t45 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t45 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 .t45 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b42 big 0 0
    const (64) int 6 0
ecom: 
name status string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b42 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t45 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t45 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 .t45 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 .b46 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 .b46 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 .b46 big 0 0
    const (80) int 6 0
ecom: 
const (-1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b46 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 .b42 big 0 0
    const (64) int 6 0
ecom: 
name .t45 list of int 0 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b42 big 0 0
    const (72) int 6 0
ecom: 
= list of int 10 1
  name .t45 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t45 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 .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 .b46 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 .b46 big 0 0
    const (72) 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: 
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
generate desc for ref Node
generate desc for ref Node
	desc	$-1,8,"80"
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
name .b44 ref Node 0 0
ecom: 
= ref Node 10 1
  name .b44 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .b44 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 ref Node
generate desc for ref Node
	desc	$-1,8,"80"
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 .b44 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 .b44 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 .b44 ref Node 0 0
    const (8) int 6 0
generate desc for ref Node
generate desc for ref Node
	desc	$-1,8,"80"
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 .b47 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 .b47 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 .b47 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 .b47 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 .b47 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 .b47 ref Node 0 0
    const (32) int 6 0
ecom: 
= ref Node 10 1
  name .b47 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .b47 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 .b44 ref Node 0 0
    const (16) int 6 0
generate desc for ref Node
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 .b47 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 .b47 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 .b47 ref Node 0 0
    const (8) int 6 0
generate desc for ref Node
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 .b48 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 .b48 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 .b48 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 .b48 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 .b48 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 .b48 ref Node 0 0
    const (32) int 6 0
ecom: 
= ref Node 10 1
  name .b48 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .b48 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 .b47 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 .b47 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 .b47 ref Node 0 0
    const (32) int 6 0
ecom: 
= ref Node 10 1
  name .b47 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .b47 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 .b44 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 .b44 ref Node 0 0
    const (32) int 6 0
ecom: 
= ref Node 10 1
  name .b44 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .b44 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 ref Redirlist
generate desc for ref Redirlist
	desc	$-1,8,"80"
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 .b48 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 .b48 ref Redirlist 0 0
    const (0) int 6 0
ecom: 
= ref Redirlist 10 1
  name .b48 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .b48 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 .b42 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 .b42 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 .b42 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 .b42 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 .b46 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 .b46 big 0 0
    const (64) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b46 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 .b46 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 .b46 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 .b46 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 .b49 (int, ref Expropagate) 0 0
ecom: 
= ref Expropagate 10 1
  * ref Expropagate 0 0
    + int 13 1
      adr int 13 1
        name .b49 (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 .b49 (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 .b46 big 0 0
    const (64) int 6 0
ecom: 
const apid string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b46 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 .b46 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b48 ref Listnode 0 0
generate desc for ref Listnode
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 .b48 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 .b48 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 .b48 ref Listnode 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t45 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b48 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b48 ref Listnode 0 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: 
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 .b46 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 .b46 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 .b46 big 0 0
    const (80) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b46 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 .t43 int ref 1
96: local .b46 big ref 6
104: local redirs ref Redirlist ref 5
112: local .b42 big ref 4
120: local .b44 ref Localenv ref 4
128: local .b48 ref Node ref 4
136: local status string ref 4
144: local line list of ref Listnode ref 3
152: local startchan chan of (int, ref Expropagate) ref 3
160: local .b47 ref Node ref 2
168: local .t45 string ref 1
176: local .b49 (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 .t43 type int offset 92 (d->offset=92 start=0) returns -1
descmap .b46 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 .b42 type big offset 112 (d->offset=112 start=0) returns -1
descmap .b44 type ref Localenv offset 120 (d->offset=120 start=0) returns 120
descmap .b48 type ref Node offset 128 (d->offset=128 start=0) returns 128
descmap status type string offset 136 (d->offset=136 start=0) returns 136
descmap line type list of ref Listnode offset 144 (d->offset=144 start=0) returns 144
descmap startchan type chan of (int, ref Expropagate) offset 152 (d->offset=152 start=0) returns 152
descmap .b47 type ref Node offset 160 (d->offset=160 start=0) returns 160
descmap .t45 type string offset 168 (d->offset=168 start=0) returns 168
descmap adt offset 176
descmap offset 176
descmap t0 type int offset 176 (d->offset=0 start=176) returns -1
descmap t1 type ref Expropagate offset 184 (d->offset=8 start=176) returns 184
descmap .b49 type (int, ref Expropagate) offset 176 (d->offset=176 start=0) returns 184
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
generate desc for ref Node
generate desc for ref Node
	desc	$-1,8,"80"
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
name .b50 ref Node 0 0
ecom: 
= ref Node 10 1
  name .b50 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .b50 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
generate desc for ref Node
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const right (16) int 6 0
ecom to: 
name .b50 ref Node 0 0
ecom: 
= ref Node 10 1
  name .b50 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .b50 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 .b51 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 .b51 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 .t52 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 .b53 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 .b53 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 .b53 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 .b53 big 0 0
    const (88) int 6 0
ecom: 
name .t52 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b51 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t52 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 .t52 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 .b53 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 .b53 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 .b53 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 .b53 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 .b53 big 0 0
    const (64) int 6 0
ecom: 
const bad assign string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b53 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 .b53 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 .b53 big 0 0
    const (64) int 6 0
ecom: 
const bad assign string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b53 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 .b53 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 .b53 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name vars list of ref Listnode 0 0
ecom to: 
name .b50 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b50 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b50 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 .b53 big 0 0
    const (64) int 6 0
ecom: 
const bad assign string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b53 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 .b53 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 .t52 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t52 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 .t52 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name tval list of ref Listnode 0 0
ecom to: 
name .b50 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t52 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b50 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b50 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t52 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 .t52 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 .b53 big 0 0
    const (64) int 6 0
ecom: 
name vname string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b53 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 .b53 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 .b53 big 0 0
    const (64) int 6 0
ecom: 
name vname string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b53 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 .b53 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 .b53 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 .b50 ref Node ref 4
120: local redirs ref Redirlist ref 4
128: local val list of ref Listnode ref 4
136: local vname string ref 4
144: local .b51 big ref 2
152: local .t52 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 .b53 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 .b50 type ref Node offset 112 (d->offset=112 start=0) returns 112
descmap redirs type ref Redirlist offset 120 (d->offset=120 start=0) returns 120
descmap val type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
descmap vname type string offset 136 (d->offset=136 start=0) returns 136
descmap .b51 type big offset 144 (d->offset=144 start=0) returns -1
descmap .t52 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 .t54 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 .b55 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 .t56 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 .b57 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 .b55 big 0 0
    const (64) int 6 0
ecom: 
const no pipe string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b55 big 0 0
    const (72) int 6 0
ecom: 
name .t56 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b55 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t56 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t56 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
generate desc for ref Redir
generate desc for ref Redir
	desc	$-1,8,"80"
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .b58 ref Redir 0 0
ecom: 
= ref Redir 10 1
  name .b58 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .b58 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
generate desc for ref Redir
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .b58 ref Redir 0 0
ecom: 
= ref Redir 10 1
  name .b58 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .b58 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 .b59 (int, int) 0 0
ecom: 
name fd2 int 0 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name .b59 (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 .b59 (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 .b57 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 .b57 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 .b57 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 .b55 big 0 0
ecom: 
name nwfdno int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b57 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 .b57 big 0 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 8 1
  name .b57 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 ref Redirlist
generate desc for ref Redirlist
	desc	$-1,8,"80"
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 .b58 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 .b58 ref Redirlist 0 0
    const (0) int 6 0
ecom: 
= ref Redirlist 10 1
  name .b58 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .b58 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 .t56 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 .b55 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 .b55 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 .b55 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 .b55 big 0 0
    const (88) int 6 0
ecom: 
name .t56 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b57 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t56 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 .t56 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 .b57 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 .b60 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 .b60 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 .b57 big 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b60 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 .b60 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 .b60 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 .b60 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 .b60 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 .b60 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 .b60 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b60 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 .b60 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 .b60 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 .b60 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 .b60 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 .b60 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 .b60 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 .b60 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 .b60 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 .b60 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 .b60 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b60 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 .b60 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 .b57 big 0 0
    const (64) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b57 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 .b57 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 .b57 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 .b57 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 .b61 (int, ref Expropagate) 0 0
ecom: 
= ref Expropagate 10 1
  * ref Expropagate 0 0
    + int 13 1
      adr int 13 1
        name .b61 (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 .b61 (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 .t56 list of int 0 0
ecom: 
= list of int 10 1
  name .t56 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t56 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 .t54 int ref 1
112: local .b57 big ref 7
120: local r ref Redirlist ref 7
128: local fds array of ref Sys->FD ref 6
136: local .b55 big ref 4
144: local .b58 ref Redir ref 3
152: local startchan chan of (int, ref Expropagate) ref 3
160: local pids list of int ref 2
168: local rlist list of ref Listnode ref 2
176: local .b60 Redirword ref 2
208: local .b59 (int, int) ref 1
216: local .t56 string ref 1
224: local .b61 (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 .t54 type int offset 108 (d->offset=108 start=0) returns -1
descmap .b57 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 .b55 type big offset 136 (d->offset=136 start=0) returns -1
descmap .b58 type ref Redir offset 144 (d->offset=144 start=0) returns 144
descmap startchan type chan of (int, ref Expropagate) offset 152 (d->offset=152 start=0) returns 152
descmap pids type list of int offset 160 (d->offset=160 start=0) returns 160
descmap rlist type list of ref Listnode 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 .b60 type Redirword offset 176 (d->offset=176 start=0) returns 184
descmap adt offset 208
descmap offset 208
descmap t0 type int offset 208 (d->offset=0 start=208) returns -1
descmap t1 type int offset 212 (d->offset=4 start=208) returns -1
descmap .b59 type (int, int) offset 208 (d->offset=208 start=0) returns -1
descmap .t56 type string offset 216 (d->offset=216 start=0) returns 216
descmap adt offset 224
descmap offset 224
descmap t0 type int offset 224 (d->offset=0 start=224) returns -1
descmap t1 type ref Expropagate offset 232 (d->offset=8 start=224) returns 232
descmap .b61 type (int, ref Expropagate) offset 224 (d->offset=224 start=0) returns 232
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 .t63 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 .b64 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 .b64 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 .b64 big 0 0
    const (80) int 6 0
ecom: 
name .t63 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b62 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t63 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 .t63 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 .b62 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 .b64 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 .b64 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 .b64 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 .b64 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
generate desc for ref Node
ecom: 
* ref Node 8 0
  + int 15 1
    name n ref Node 0 0
    const left (8) int 6 0
ecom to: 
name .b65 ref Node 0 0
ecom: 
= ref Node 10 1
  name .b65 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .b65 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 .t63 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 .b62 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 .b62 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 .b62 big 0 0
    const (80) int 6 0
ecom: 
name .t63 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b64 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t63 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 .t63 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 .b64 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 .b64 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 .b64 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 .b64 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 .b64 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 .b64 big ref 4
112: local .b62 big ref 2
120: local .b65 ref Node ref 1
128: local .t63 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 .b64 type big offset 104 (d->offset=104 start=0) returns -1
descmap .b62 type big offset 112 (d->offset=112 start=0) returns -1
descmap .b65 type ref Node offset 120 (d->offset=120 start=0) returns 120
descmap .t63 type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name left list of ref Listnode 0 0
ecom to: 
name .b66 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b66 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b66 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name l list of ref Listnode 0 0
ecom to: 
name .b66 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b66 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b66 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 .b66 ref Listnode ref 2
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 .b66 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 .t67 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 .b68 big 0 0
    const (64) int 6 0
ecom: 
const bad redir string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b68 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 .b68 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 .t67 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 .b68 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 .t69 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 .b70 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 .b68 big 0 0
    const (64) int 6 0
ecom: 
const no pipe string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b68 big 0 0
    const (72) int 6 0
ecom: 
name .t69 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b68 big 0 0
    const (80) int 6 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: 
= 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 .b70 big 0 0
    const (64) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b70 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 .b70 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 .b70 big 0 0
    const (88) int 6 0
generate desc for ref Redirlist
generate desc for ref Redirlist
	desc	$-1,8,"80"
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 .b71 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 .b71 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 .b72 (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 .b72 (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 .b68 big 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* polymorphic type 0 0
  + int 13 1
    adr int 13 1
      name .b72 (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 .b72 (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 .t69 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 .b72 (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 .b72 (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 .b72 (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 .b72 (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 .t69 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 .t69 list of (ref Sys->FD, polymorphic type, Redir) 0 0
ecom: 
= ref Redirlist 10 1
  name .b71 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .b71 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 .b70 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 .b70 big 0 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 8 1
  name .b70 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 .b73 (int, ref Expropagate) 0 0
ecom: 
= ref Expropagate 10 1
  * ref Expropagate 0 0
    + int 13 1
      adr int 13 1
        name .b73 (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 .b73 (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 .b70 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 .t67 int ref 1
96: local p array of ref Sys->FD ref 5
104: local .b68 big ref 4
112: local .b70 big ref 4
120: local r Redir ref 4
136: local startchan chan of (int, ref Expropagate) ref 3
144: local .b71 ref Redirlist ref 1
152: local .t69 string ref 1
160: local .b73 (int, ref Expropagate) ref 1
176: local .b72 (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 .t67 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 .b68 type big offset 104 (d->offset=104 start=0) returns -1
descmap .b70 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 .b71 type ref Redirlist offset 144 (d->offset=144 start=0) returns 144
descmap .t69 type string 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 .b73 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 .b72 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b74 ref Listnode 0 0
generate desc for ref Listnode
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 .b74 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 .b74 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 .b74 ref Listnode 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t75 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b74 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b74 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t75 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 .t75 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 .t75 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 .b77 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 .b77 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 .b77 big 0 0
    const (80) int 6 0
generate desc for ref Redirlist
generate desc for ref Redirlist
	desc	$-1,8,"80"
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 .b74 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 .b74 ref Redirlist 0 0
    const (0) int 6 0
ecom: 
= ref Redirlist 10 1
  name .b74 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .b74 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 .b77 big 0 0
    const (88) int 6 0
ecom: 
name .t75 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b76 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t75 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 .t75 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 .t78 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 .b77 big 0 0
    const (64) int 6 0
ecom: 
const bad redir string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b77 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 .b77 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name wlist list of ref Listnode 0 0
ecom to: 
name .b74 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b74 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b74 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 .b77 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 .b77 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 .b77 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 .b79 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 .b79 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 .b79 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 .b79 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 .b79 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
generate desc for ref Redir
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .b74 ref Redir 0 0
ecom: 
= ref Redir 10 1
  name .b74 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .b74 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 .b79 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 .b79 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 .b79 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 .b79 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b79 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 .b79 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b74 ref Listnode 0 0
generate desc for ref Listnode
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 .b74 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 .b74 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 .b74 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 .t75 string 0 0
ecom: 
= string 10 1
  name .t75 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t75 string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t75 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b74 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b74 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t75 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 .t75 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 .b79 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 .b79 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 .b79 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
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name wlist list of ref Listnode 0 0
ecom to: 
name .b74 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b74 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b74 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 .b79 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
generate desc for ref Redir
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .b74 ref Redir 0 0
generate desc for Redir
ecom: 
= ref Redir 10 1
  name .b74 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .b74 ref Redir 0 0
generate desc for Redirword
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 0 0
    adr int 13 1
      name .b79 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 .b79 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b79 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 .b79 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 .b79 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 .b79 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 .b79 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 .b79 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
generate desc for ref Redir
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .b74 ref Redir 0 0
generate desc for Redir
ecom: 
= ref Redir 10 1
  name .b74 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .b74 ref Redir 0 0
generate desc for Redirword
ecom: 
= ref Sys->FD 10 1
  * ref Sys->FD 0 0
    adr int 13 1
      name .b79 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 .b79 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b79 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 .b79 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 .b77 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 .b77 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 .b77 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 .b77 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 .t75 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 .b76 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 .b76 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 .b76 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 .b76 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 .t80 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 .b76 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 .b76 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 .b76 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 .b76 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 .b77 big 0 0
    const (64) int 6 0
ecom: 
name .t75 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b77 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t75 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 .t75 list of ref Listnode 0 0
ecom: 
name .t80 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b77 big 0 0
    const (80) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t80 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 .t80 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 .b77 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 .b77 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 .b77 big 0 0
    const (80) int 6 0
generate desc for ref Redirlist
generate desc for ref Redirlist
	desc	$-1,8,"80"
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 .b74 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 .b74 ref Redirlist 0 0
    const (0) int 6 0
ecom: 
= ref Redirlist 10 1
  name .b74 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .b74 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 .b77 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 .t78 int 0 0
eacom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name arg list of ref Listnode 0 0
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name arg list of ref Listnode 0 0
ecom to: 
name .b74 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b74 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b74 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 .b77 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 .b77 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
generate desc for ref Node
generate desc for ref Node
	desc	$-1,8,"80"
ecom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name arg list of ref Listnode 0 0
ecom to: 
name .b74 ref Node 0 0
eacom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name arg list of ref Listnode 0 0
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name arg list of ref Listnode 0 0
ecom to: 
name .b74 ref Listnode 0 0
ecom: 
= ref Node 10 1
  name .b74 ref Node 0 0
  name nil ref Node 1 0
ecom: 
name nil ref Node 1 0
ecom to: 
name .b74 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 .t78 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
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name arg list of ref Listnode 0 0
ecom to: 
name .b74 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b74 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b74 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 .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: bad variable name string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b77 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 .t80 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 .b76 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
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name arg list of ref Listnode 0 0
ecom to: 
name .b74 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b74 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b74 ref Listnode 0 0
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: 
name .t80 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b77 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t80 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t80 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b74 ref Listnode 0 0
generate desc for ref Listnode
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 .b74 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 .b74 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 .b74 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 .t78 int 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t80 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b74 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b74 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t80 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 .t80 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b74 ref Listnode 0 0
generate desc for ref Listnode
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 .b74 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 .b74 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 .b74 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 .t80 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 .b76 big 0 0
    const (64) int 6 0
ecom: 
name .t80 list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b77 big 0 0
    const (64) int 6 0
ecom: 
= list of string 10 1
  name .t80 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t80 list of string 0 0
ecom: 
const   string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b77 big 0 0
    const (72) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t80 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b74 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b74 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t80 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 .t80 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 .b77 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 .b77 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 .b77 big 0 0
    const (80) int 6 0
generate desc for ref Redirlist
generate desc for ref Redirlist
	desc	$-1,8,"80"
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 .b74 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 .b74 ref Redirlist 0 0
    const (0) int 6 0
ecom: 
= ref Redirlist 10 1
  name .b74 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .b74 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 .b77 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 .t80 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 .t75 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 .b81 big 0 0
    const (64) int 6 0
ecom: 
const ifs string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b81 big 0 0
    const (72) int 6 0
ecom: 
name .t75 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b76 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t75 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 .t75 list of ref Listnode 0 0
ecom: 
name .t80 list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b77 big 0 0
    const (64) int 6 0
ecom: 
= list of string 10 1
  name .t80 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t80 list of string 0 0
ecom: 
const  string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b77 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 .b82 (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 .t80 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 .b77 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 .b81 big 0 0
    const (64) int 6 0
ecom: 
name .t80 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b81 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t80 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 .t80 list of ref Listnode 0 0
ecom: 
name seps string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b81 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 .b82 (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 .b82 (list of ref Listnode, string) 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b82 (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 .b82 (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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b74 ref Listnode 0 0
generate desc for ref Listnode
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 .b74 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 .b74 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 .b74 ref Listnode 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t80 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b74 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b74 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t80 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 .t80 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 .b81 big 0 0
    const (64) int 6 0
ecom: 
const bad assign string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b81 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 .b81 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 .b81 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 .t80 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 .t80 string 0 0
ecom: 
= string 10 1
  name .t80 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t80 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 .t78 int ref 1
96: local .b74 ref Listnode ref 23
104: local .b77 big ref 13
112: local nlist list of ref Listnode ref 13
120: local arg list of ref Listnode ref 7
128: local .b76 big ref 6
136: local seps string ref 5
144: local wlist list of ref Listnode ref 5
152: local .b81 big ref 4
160: local fd ref Sys->FD ref 4
168: local .b79 Redirword ref 3
200: local arg list of ref Listnode ref 2
208: local .t75 list of ref Listnode ref 1
216: local .t80 list of ref Listnode ref 1
224: local .b82 (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 .t78 type int offset 88 (d->offset=88 start=0) returns -1
descmap .b74 type ref Listnode offset 96 (d->offset=96 start=0) returns 96
descmap .b77 type big offset 104 (d->offset=104 start=0) returns -1
descmap nlist type list of ref Listnode offset 112 (d->offset=112 start=0) returns 112
descmap arg type list of ref Listnode offset 120 (d->offset=120 start=0) returns 120
descmap .b76 type big offset 128 (d->offset=128 start=0) returns -1
descmap seps type string offset 136 (d->offset=136 start=0) returns 136
descmap wlist type list of ref Listnode offset 144 (d->offset=144 start=0) returns 144
descmap .b81 type big offset 152 (d->offset=152 start=0) returns -1
descmap fd type ref Sys->FD 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 .b79 type Redirword offset 168 (d->offset=168 start=0) returns 176
descmap arg type list of ref Listnode offset 200 (d->offset=200 start=0) returns 200
descmap .t75 type list of ref Listnode offset 208 (d->offset=208 start=0) returns 208
descmap .t80 type list of ref Listnode offset 216 (d->offset=216 start=0) returns 216
descmap adt offset 224
descmap offset 224
descmap t0 type list of ref Listnode offset 224 (d->offset=0 start=224) returns 224
descmap t1 type string offset 232 (d->offset=8 start=224) returns 232
descmap .b82 type (list of ref Listnode, string) offset 224 (d->offset=224 start=0) returns 232
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 .b83 big 0 0
    const (64) int 6 0
ecom: 
const bad $ arg string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b83 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 .b83 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 .t84 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 .b85 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 .b85 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 .b85 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 .b85 big 0 0
    const (88) int 6 0
ecom: 
name .t84 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b83 big 0 0
    const (64) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t84 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 .t84 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 .b85 big 0 0
    const (64) int 6 0
ecom: 
const bad $ arg string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b85 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 .b85 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
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name cmd list of ref Listnode 0 0
ecom to: 
name .b86 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b86 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b86 ref Listnode 0 0
eacom: 
* ref Node 10 1
  hd ref Listnode 10 1
    name cmd list of ref Listnode 0 0
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name cmd list of ref Listnode 0 0
ecom to: 
name .b86 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b86 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b86 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 .b85 big 0 0
    const (64) int 6 0
ecom: 
const bad $ arg string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b85 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 .b85 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 .b87 (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 .b85 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name ctxt ref Context 0 0
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b86 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b86 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b86 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 .b85 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
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name cmd list of ref Listnode 0 0
ecom to: 
name .b86 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b86 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b86 ref Listnode 0 0
ecom: 
= list of Shellbuiltin 10 1
  * list of Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name .b87 (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 .b87 (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 .t84 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 .b83 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 .b83 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
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name cmd list of ref Listnode 0 0
ecom to: 
name .b86 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b86 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b86 ref Listnode 0 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b85 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 .b85 big 0 0
    const (72) int 6 0
ecom: 
name .t84 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b85 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t84 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t84 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 .t84 Shellbuiltin 0 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b85 big 0 0
    const (64) int 6 0
ecom: 
name myself Sh 1 0
ecom to: 
* Sh 8 0
  + int 15 0
    name .b85 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 .b85 big 0 0
    const (80) int 6 0
ecom: 
= Shellbuiltin 10 1
  name .t84 Shellbuiltin 0 0
  name nil Shellbuiltin 1 0
ecom: 
name nil Shellbuiltin 1 0
ecom to: 
name .t84 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 .b85 big ref 6
96: local .b86 ref Listnode ref 5
104: local r ref Redirlist ref 4
112: local .b83 big ref 3
120: local bmods list of Shellbuiltin ref 3
128: local .t84 list of ref Listnode ref 1
136: local .b87 (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 .b85 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b86 type ref Listnode offset 96 (d->offset=96 start=0) returns 96
descmap r type ref Redirlist offset 104 (d->offset=104 start=0) returns 104
descmap .b83 type big offset 112 (d->offset=112 start=0) returns -1
descmap bmods type list of Shellbuiltin offset 120 (d->offset=120 start=0) returns 120
descmap .t84 type list of 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 .b87 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 .t88 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 .b89 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 .b89 big 0 0
    const (72) int 6 0
ecom: 
len int 10 1
  name buf array of byte 0 0
ecom to: 
name .t90 int 0 0
ecom: 
name buf array of byte 0 0
ecom to: 
* array of byte 8 0
  + int 15 0
    name .b89 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 .b89 big 0 0
    const (80) int 6 0
ecom: 
len int 10 1
  name buf array of byte 0 0
ecom to: 
name .t90 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 .t90 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 .t90 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 .t91 array of byte 0 0
ecom: 
len int 10 1
  name buf array of byte 0 0
ecom to: 
name .t90 int 0 0
ecom: 
name buf array of byte 0 0
ecom to: 
name .t91 array of byte 0 0
ecom: 
= array of byte 10 1
  name .t91 array of byte 0 0
  name nil array of byte 1 0
ecom: 
name nil array of byte 1 0
ecom to: 
name .t91 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 .b92 (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 .b89 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 .t91 array of byte 0 0
ecom: 
name buf array of byte 0 0
ecom to: 
name .t91 array of byte 0 0
ecom: 
= array of byte 10 1
  name .t91 array of byte 0 0
  name nil array of byte 1 0
ecom: 
name nil array of byte 1 0
ecom to: 
name .t91 array of byte 0 0
ecom: 
name seps string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b89 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 .b92 (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 .b92 (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 .t91 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 .t91 array of byte 0 0
ecom: 
name buf array of byte 0 0
ecom to: 
name .t91 array of byte 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t93 list of string 0 0
ecom: 
= string 10 1
  name .t91 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t91 string 0 0
ecom: 
= list of string 10 1
  name .t93 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t93 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 .b89 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 .t88 int ref 1
100: local .t90 int ref 1
104: local buf array of byte ref 9
112: local .b89 big ref 3
120: local l list of string ref 3
128: local nbuf array of byte ref 3
136: local .t91 array of byte ref 1
144: local .t93 list of string ref 1
152: local .b92 (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 .t88 type int offset 96 (d->offset=96 start=0) returns -1
descmap .t90 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 .b89 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 .t91 type array of byte offset 136 (d->offset=136 start=0) returns 136
descmap .t93 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 .b92 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 .t94 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 .b95 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 .t96 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 .b97 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 .b95 big 0 0
    const (64) int 6 0
ecom: 
const no pipe string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b95 big 0 0
    const (72) int 6 0
ecom: 
name .t96 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b95 big 0 0
    const (80) int 6 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 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 ref Redirlist
generate desc for ref Redirlist
	desc	$-1,8,"80"
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 .b98 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 .b98 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 .b99 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 .b99 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 .b97 big 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b99 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 .b99 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 .b99 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 .b99 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 .b99 Redirword 0 0
          const (16) int 6 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t96 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 .b99 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 .b99 Redirword 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b99 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 .b99 Redirword 0 0
    const w (8) int 6 0
ecom: 
= list of Redirword 10 1
  name .t96 list of Redirword 0 0
  name nil list of Redirword 1 0
ecom: 
name nil list of Redirword 1 0
ecom to: 
name .t96 list of Redirword 0 0
ecom: 
= ref Redirlist 10 1
  name .b98 ref Redirlist 0 0
  name nil ref Redirlist 1 0
ecom: 
name nil ref Redirlist 1 0
ecom to: 
name .b98 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 .b97 big 0 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
* ref Sys->FD 8 1
  name .b97 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 .b97 big 0 0
    const (64) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b97 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 .b97 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 .b97 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 .b97 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 .b97 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 .b97 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 .b95 big 0 0
ecom: 
name seps string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b97 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 .t96 string 0 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: 
:: 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 .b97 big 0 0
    const (72) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t100 list of int 0 0
ecom: 
= list of int 10 1
  name .t100 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t100 list of int 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: 
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 .t94 int ref 1
112: local .b97 big ref 6
120: local fds array of ref Sys->FD ref 5
128: local .b95 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 .b98 ref Redirlist ref 1
168: local .t100 list of int ref 1
176: local .t96 string ref 1
184: local .b99 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 .t94 type int offset 104 (d->offset=104 start=0) returns -1
descmap .b97 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 .b95 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 .b98 type ref Redirlist offset 160 (d->offset=160 start=0) returns 160
descmap .t100 type list of int offset 168 (d->offset=168 start=0) returns 168
descmap .t96 type string offset 176 (d->offset=176 start=0) returns 176
descmap adt offset 184
descmap offset 184
descmap fd type ref Sys->FD offset 184 (d->offset=0 start=184) returns 184
descmap w type string offset 192 (d->offset=8 start=184) returns 192
descmap adt offset 200
descmap offset 200
descmap rtype type int offset 200 (d->offset=0 start=200) returns -1
descmap fd1 type int offset 204 (d->offset=4 start=200) returns -1
descmap fd2 type int offset 208 (d->offset=8 start=200) returns -1
descmap r type Redir offset 200 (d->offset=16 start=184) returns -1
descmap .b99 type Redirword offset 184 (d->offset=184 start=0) returns 192
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 .b101 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 .b101 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 ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b102 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 .b102 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 .b102 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 .t103 string 0 0
ecom: 
= string 10 1
  name .t103 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t103 string 0 0
ecom: 
= ref Listnode 10 1
  name .b102 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b102 ref Listnode 0 0
fn: concatwords
64: argument p1 ref Listnode ref 5
72: argument p2 ref Listnode ref 5
80: local .b101 big ref 2
88: local .b102 ref Listnode ref 1
96: local .t103 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 .b101 type big offset 80 (d->offset=80 start=0) returns -1
descmap .b102 type ref Listnode offset 88 (d->offset=88 start=0) returns 88
descmap .t103 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 .b104 big 0 0
    const (64) int 6 0
ecom: 
const bad concatenation string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b104 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 .b104 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 .t105 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t105 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 .t105 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 .t105 list of ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t105 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 .t105 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b106 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 .b104 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 .b104 big 0 0
    const (72) int 6 0
ecom: 
= ref Listnode 10 1
  name .b106 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b106 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 .t107 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 .t108 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 .b104 big 0 0
    const (64) int 6 0
ecom: 
const bad concatenation string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b104 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 .b104 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
generate desc for ref Listnode
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 .b106 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 .b104 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 .b104 big 0 0
    const (72) int 6 0
ecom: 
= ref Listnode 10 1
  name .b106 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b106 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 .b109 (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 .b109 (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 .b109 (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 .b109 (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 .b109 (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 .b109 (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 .b109 (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 .b104 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 .t107 int ref 1
92: local .t108 int ref 1
96: local .b104 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 .b106 ref Listnode ref 2
136: local .t105 list of ref Listnode ref 1
144: local .b109 (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 .t107 type int offset 88 (d->offset=88 start=0) returns -1
descmap .t108 type int offset 92 (d->offset=92 start=0) returns -1
descmap .b104 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 .b106 type ref Listnode offset 128 (d->offset=128 start=0) returns 128
descmap .t105 type list of ref Listnode offset 136 (d->offset=136 start=0) returns 136
descmap adt offset 144
descmap offset 144
descmap t0 type list of ref Listnode offset 144 (d->offset=0 start=144) returns 144
descmap t1 type list of ref Listnode offset 152 (d->offset=8 start=144) returns 152
descmap .b109 type (list of ref Listnode, list of ref Listnode) offset 144 (d->offset=144 start=0) returns 152
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 .b110 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 .b110 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 .b110 big 0 0
    const (64) int 6 0
ecom: 
name copyenv int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b110 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 .b110 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 .b110 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 .t111 int 0 0
generate desc for big
ecom: 
const NEWFD (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b110 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 .b110 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 .b112 (int, ref Expropagate) 0 0
ecom: 
name pid int 0 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name .b112 (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 .b112 (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 .b112 (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 .b112 (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 .b110 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 .b110 big 0 0
    const (72) int 6 0
ecom: 
name copyenv int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b110 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 .b112 (int, ref Expropagate) 0 0
ecom: 
name pid int 0 0
ecom to: 
* int 0 0
  + int 13 1
    adr int 13 1
      name .b112 (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 .b112 (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 .b112 (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 .b112 (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 .t113 string 0 0
ecom: 
= string 10 1
  name .t113 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t113 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 .t111 int ref 1
120: local .b110 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 .b112 (int, ref Expropagate) ref 2
168: local .t113 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 .t111 type int offset 112 (d->offset=112 start=0) returns -1
descmap .b110 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 .b112 type (int, ref Expropagate) offset 152 (d->offset=152 start=0) returns 160
descmap .t113 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 .b114 big 0 0
    const (64) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b114 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 .b114 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 .b114 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 .b114 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 .b115 (int, ref Expropagate) 0 0
ecom: 
= ref Expropagate 10 1
  * ref Expropagate 0 0
    + int 13 1
      adr int 13 1
        name .b115 (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 .b115 (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 .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 .t116 list of int 0 0
ecom: 
= list of int 10 1
  name .t116 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t116 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 .b114 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 .b114 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 .t117 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: 
name newfdl list of int 0 0
ecom to: 
* list of int 8 0
  + int 15 0
    name .b114 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 .b114 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 .b114 big 0 0
    const (72) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b114 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 .t117 int ref 1
120: local .b114 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 .t116 list of int ref 1
160: local .b115 (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 .t117 type int offset 112 (d->offset=112 start=0) returns -1
descmap .b114 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 .t116 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 .b115 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 .t118 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 .t118 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 .t118 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 .t118 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 .t118 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 .t118 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 .t118 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 .t118 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 .t118 int ref 1
generate desc for absolute
descmap offset 0
descmap p type string offset 64 (d->offset=64 start=0) returns 64
descmap .t118 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .b119 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b119 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b119 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 .t120 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 .t121 string 0 0
ecom: 
len int 10 1
  name progname string 0 0
ecom to: 
name .t120 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 .t122 int 0 0
ecom: 
len int 10 1
  name progname string 0 0
ecom to: 
name .t122 int 0 0
ecom: 
name progname string 0 0
ecom to: 
name .t121 string 0 0
ecom: 
= string 10 1
  name .t121 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t121 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 .t122 int 0 0
generate desc for big
ecom: 
name progname string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b123 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 .t121 list of string 0 0
ecom: 
= list of string 10 1
  name .t121 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t121 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 .t121 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 .b123 big 0 0
    const (64) int 6 0
ecom: 
const path string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b123 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t121 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 .t121 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 .b123 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 .t121 list of string 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t121 list of string 0 0
ecom: 
= list of string 10 1
  name .t121 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t121 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 .t121 string 0 0
ecom: 
= string 10 1
  name .t121 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t121 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 .t121 string 0 0
ecom: 
hd string 10 1
  name pathlist list of string 0 0
ecom to: 
name .t121 string 0 0
ecom: 
= string 10 1
  name .t121 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t121 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 .b123 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 .b123 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b119 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b119 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b119 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 .t122 int 0 0
generate desc for big
ecom: 
const NEWFD (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b123 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 .b123 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 .b123 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 .b123 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 .b123 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 .b123 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 .b123 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 .b123 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 .b123 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 .b123 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 .b123 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 .b123 big 0 0
    const (72) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t121 list of int 0 0
ecom: 
= list of int 10 1
  name .t121 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t121 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 .b123 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 .t122 int 0 0
generate desc for big
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b123 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
generate desc for ref Sys->FD
generate desc for ref Sys->FD
	desc	$-1,8,"80"
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 .b119 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 .b123 big 0 0
    const (64) int 6 0
ecom: 
const OREAD (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b123 big 0 0
    const (72) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .b119 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b119 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 .b123 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 .t122 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 .t122 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 .b123 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 .b123 big 0 0
    const (72) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b123 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 .b123 big 0 0
    const (88) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b123 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 .b123 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 .t122 int 0 0
generate desc for big
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b123 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 .t121 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 .b124 big 0 0
    const (64) int 6 0
ecom: 
name progname string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b124 big 0 0
    const (72) int 6 0
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b124 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 .b123 big 0 0
    const (64) int 6 0
ecom: 
name .t121 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b123 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t121 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t121 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 .t120 int ref 1
188: local .t122 int ref 1
192: local .b123 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 .b119 ref Listnode ref 3
248: local argv list of string ref 3
256: local extstart chan of int ref 3
264: local fd ref Sys->FD ref 3
272: local npath string ref 3
280: local pl list of ref Listnode ref 2
288: local .b124 big ref 1
296: local .t121 string 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 .t120 type int offset 184 (d->offset=184 start=0) returns -1
descmap .t122 type int offset 188 (d->offset=188 start=0) returns -1
descmap .b123 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 .b119 type ref Listnode offset 240 (d->offset=240 start=0) returns 240
descmap argv type list of string offset 248 (d->offset=248 start=0) returns 248
descmap extstart type chan of int offset 256 (d->offset=256 start=0) returns 256
descmap fd type ref Sys->FD offset 264 (d->offset=264 start=0) returns 264
descmap npath type string offset 272 (d->offset=272 start=0) returns 272
descmap pl type list of ref Listnode offset 280 (d->offset=280 start=0) returns 280
descmap .b124 type big offset 288 (d->offset=288 start=0) returns -1
descmap .t121 type string offset 296 (d->offset=296 start=0) returns 296
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 .t125 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 .t125 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 .t125 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 .t125 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 .t125 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 .t125 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 .b126 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 .b126 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 .b126 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 .b126 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 .b126 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 .b126 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 .b126 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 .b126 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 .b127 (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 .b126 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 .t128 array of byte 0 0
ecom: 
name header array of byte 0 0
ecom to: 
name .t128 array of byte 0 0
ecom: 
= array of byte 10 1
  name .t128 array of byte 0 0
  name nil array of byte 1 0
ecom: 
name nil array of byte 1 0
ecom to: 
name .t128 array of byte 0 0
ecom: 
const  	 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b126 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 .b127 (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 .b127 (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 .b126 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 .b126 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b129 ref Listnode 0 0
generate desc for ref Listnode
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 .b129 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 .b129 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 .b129 ref Listnode 0 0
    const (8) int 6 0
ecom: 
= ref Listnode 10 1
  name .b129 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b129 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b129 ref Listnode 0 0
generate desc for ref Listnode
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 .b129 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 .b129 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 .b129 ref Listnode 0 0
    const (8) int 6 0
ecom: 
= ref Listnode 10 1
  name .b129 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b129 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name argv list of ref Listnode 0 0
ecom to: 
name .b129 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b129 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b129 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 .t128 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 .b130 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 .b126 big 0 0
    const (64) int 6 0
ecom: 
name .t128 list of ref Listnode 0 0
ecom to: 
* list of ref Listnode 8 0
  + int 15 0
    name .b126 big 0 0
    const (72) int 6 0
ecom: 
= list of ref Listnode 10 1
  name .t128 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 .t128 list of ref Listnode 0 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b126 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 .b126 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 .b129 ref Listnode ref 5
152: local .b130 big ref 1
160: local .t128 array of byte ref 1
168: local .b127 (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 .b126 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 .b129 type ref Listnode offset 144 (d->offset=144 start=0) returns 144
descmap .b130 type big offset 152 (d->offset=152 start=0) returns -1
descmap .t128 type array of byte 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 list of string offset 176 (d->offset=8 start=168) returns 176
descmap .b127 type (int, list of string) offset 168 (d->offset=168 start=0) returns 176
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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .b131 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b131 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b131 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 .b132 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
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .b131 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b131 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b131 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 .b133 (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 .b132 big 0 0
    const (64) int 6 0
ecom: 
const  string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b132 big 0 0
    const (72) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b132 big 0 0
    const (80) int 6 0
ecom: 
= ref Node 10 1
  * ref Node 0 0
    adr int 13 1
      name .b133 (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 .b133 (ref Node, string) 0 0
ecom: 
= string 10 1
  * string 0 0
    + int 13 1
      adr int 13 1
        name .b133 (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 .b133 (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 .b132 big 0 0
    const (64) int 6 0
ecom: 
const parse error string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b132 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 .b132 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
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .b131 ref Listnode 0 0
ecom: 
name cmd ref Node 0 0
ecom to: 
* ref Node 8 1
  name .b131 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b131 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b131 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 .b132 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 .b132 big 0 0
    const (64) int 6 0
ecom: 
const 0 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b132 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 .b132 big 0 0
    const (80) int 6 0
eacom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .b131 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t134 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b131 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b131 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t134 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 .t134 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 .b132 big 0 0
    const (64) int 6 0
ecom: 
const * string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b132 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 .b132 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 .b132 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 .b132 big 0 0
    const (72) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b132 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 .b132 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 .b132 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 .b132 big ref 9
104: local .b131 ref Listnode ref 4
112: local err string ref 2
120: local lex ref YYLEX ref 2
128: local status string ref 2
136: local .t134 list of ref Listnode ref 1
144: local .b133 (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 .b132 type big offset 96 (d->offset=96 start=0) returns -1
descmap .b131 type ref Listnode offset 104 (d->offset=104 start=0) returns 104
descmap err type string offset 112 (d->offset=112 start=0) returns 112
descmap lex type ref YYLEX offset 120 (d->offset=120 start=0) returns 120
descmap status type string offset 128 (d->offset=128 start=0) returns 128
descmap .t134 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 .b133 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 128 (d->offset=128 start=0) returns 128
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 .b135 (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 .b136 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b137 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b137 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b137 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 .b136 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .b137 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b137 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b137 ref Listnode 0 0
ecom: 
= list of Shellbuiltin 10 1
  * list of Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name .b135 (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 .b135 (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 .t138 Shellbuiltin 0 0
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b136 big 0 0
    const (64) int 6 0
ecom: 
name myself Sh 1 0
ecom to: 
* Sh 8 0
  + int 15 0
    name .b136 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 .b136 big 0 0
    const (80) int 6 0
ecom: 
name lseq int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b136 big 0 0
    const (88) int 6 0
ecom: 
= Shellbuiltin 10 1
  name .t138 Shellbuiltin 0 0
  name nil Shellbuiltin 1 0
ecom: 
name nil Shellbuiltin 1 0
ecom to: 
name .t138 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 .b136 big ref 2
104: local .b137 ref Environment ref 2
112: local .t138 Shellbuiltin ref 1
120: local .b135 (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 .b136 type big offset 96 (d->offset=96 start=0) returns -1
descmap .b137 type ref Environment offset 104 (d->offset=104 start=0) returns 104
descmap .t138 type Shellbuiltin offset 112 (d->offset=112 start=0) returns 112
descmap adt offset 120
descmap offset 120
descmap t0 type int offset 120 (d->offset=0 start=120) returns -1
descmap t1 type list of Shellbuiltin offset 128 (d->offset=8 start=120) returns 128
descmap .b135 type (int, list of Shellbuiltin) offset 120 (d->offset=120 start=0) returns 128
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 .t139 int 0 0
generate desc for big
ecom: 
const NEWFD (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b140 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 .b140 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 .t139 int 0 0
generate desc for big
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b140 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 .b140 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 .b140 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 .b140 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 .t139 int ref 1
112: local .b140 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 .t139 type int offset 108 (d->offset=108 start=0) returns -1
descmap .b140 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
generate desc for ref Sys->FD
generate desc for ref Sys->FD
	desc	$-1,8,"80"
ecom: 
* ref Sys->FD 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const waitfd (8) int 6 0
ecom to: 
name .b141 ref Sys->FD 0 0
ecom: 
= ref Sys->FD 10 1
  name .b141 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b141 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
generate desc for ref Sys->FD
ecom: 
* ref Sys->FD 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const waitfd (8) int 6 0
ecom to: 
name .b141 ref Sys->FD 0 0
ecom: 
= ref Sys->FD 10 1
  name .b141 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b141 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 .t143 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 .b144 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 .b144 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
generate desc for ref Sys->FD
ecom: 
* ref Sys->FD 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const waitfd (8) int 6 0
ecom to: 
name .b141 ref Sys->FD 0 0
ecom: 
= ref Sys->FD 10 1
  name .b141 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b141 ref Sys->FD 0 0
ecom: 
name .t143 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b142 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t143 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t143 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 .b144 big 0 0
    const (64) int 6 0
ecom: 
name fd2 int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b144 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 .b141 ref Sys->FD ref 3
88: local .b142 big ref 2
96: local .b144 big ref 2
104: local .t143 string 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 .b141 type ref Sys->FD offset 80 (d->offset=80 start=0) returns 80
descmap .b142 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b144 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t143 type string 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 .b145 big 0 0
    const (64) int 6 0
ecom: 
const bad redir string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b145 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 .b145 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 .t146 int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b145 big 0 0
    const (64) int 6 0
ecom: 
name fd2 int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b145 big 0 0
    const (72) int 6 0
ecom: 
name fd1 int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b145 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 .t147 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 .b148 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 .b145 big 0 0
    const (64) int 6 0
ecom: 
const bad redir string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b145 big 0 0
    const (72) int 6 0
ecom: 
name .t147 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b145 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t147 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t147 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 .t146 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 .b148 big 0 0
    const (64) int 6 0
ecom: 
name omode int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b148 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 .b148 big 0 0
    const (64) int 6 0
ecom: 
name omode int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b148 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 .b148 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 .t146 int 0 0
generate desc for big
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b148 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 .b148 big 0 0
    const (64) int 6 0
ecom: 
name omode int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b148 big 0 0
    const (72) int 6 0
ecom: 
const (438) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b148 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 .b148 big 0 0
    const (64) int 6 0
ecom: 
name omode int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b148 big 0 0
    const (72) int 6 0
ecom: 
const (438) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b148 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 .b148 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 .b148 big 0 0
    const (64) int 6 0
ecom: 
name omode int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b148 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 .b148 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 .t146 int 0 0
generate desc for big
ecom: 
name nerr string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b148 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 .b148 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 .t147 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 .b145 big 0 0
    const (64) int 6 0
ecom: 
name path string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b145 big 0 0
    const (72) int 6 0
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b145 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 .b148 big 0 0
    const (64) int 6 0
ecom: 
const bad redir string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b148 big 0 0
    const (72) int 6 0
ecom: 
name .t147 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b148 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t147 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t147 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 .b148 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 .b145 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 .b145 big 0 0
    const (72) int 6 0
ecom: 
const SEEKEND (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b145 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 .t146 int 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b148 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 .b148 big 0 0
    const (72) int 6 0
ecom: 
name fd1 int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b148 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
generate desc for ref Sys->FD
ecom: 
* ref Sys->FD 8 0
  + int 15 1
    name ctxt ref Context 0 0
    const waitfd (8) int 6 0
ecom to: 
name .b149 ref Sys->FD 0 0
ecom: 
name keepfds list of int 0 0
ecom to: 
name .t147 list of int 0 0
ecom: 
= ref Sys->FD 10 1
  name .b149 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b149 ref Sys->FD 0 0
ecom: 
= list of int 10 1
  name .t147 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t147 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 .t146 int ref 1
96: local .b148 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 .b145 big ref 5
160: local rl list of Redirword ref 5
168: local nerr string ref 3
176: local .b149 ref Sys->FD ref 1
184: local .t147 string 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 .t146 type int offset 88 (d->offset=88 start=0) returns -1
descmap .b148 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 .b145 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 .b149 type ref Sys->FD offset 176 (d->offset=176 start=0) returns 176
descmap .t147 type string 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 .t150 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 .t151 int 0 0
generate desc for big
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b152 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 .b152 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t150 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t150 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 .b152 big 0 0
    const (64) int 6 0
ecom: 
const OREAD (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b152 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 .b152 big 0 0
    const (64) int 6 0
ecom: 
const OREAD (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b152 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 .t150 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 .b153 big 0 0
    const (64) int 6 0
ecom: 
name .t150 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b152 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t150 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t150 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 .t151 int ref 1
72: local waitfd ref Sys->FD ref 5
80: local .b152 big ref 4
88: local wf string ref 3
96: local .b153 big ref 1
104: local .t150 string ref 1
generate desc for waitfd
descmap offset 0
descmap .t151 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 .b152 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 .b153 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t150 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 .t154 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 .b155 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 .b155 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 .b155 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 .t156 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 .b157 big 0 0
    const (64) int 6 0
ecom: 
name .t156 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b155 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t156 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t156 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 .b157 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 .b157 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 .t156 array of byte 0 0
ecom: 
name buf array of byte 0 0
ecom to: 
name .t156 array of byte 0 0
ecom: 
= array of byte 10 1
  name .t156 array of byte 0 0
  name nil array of byte 1 0
ecom: 
name nil array of byte 1 0
ecom to: 
name .t156 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 .t154 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 .t156 string 0 0
ecom: 
name s string 0 0
ecom to: 
name .t156 string 0 0
ecom: 
= string 10 1
  name .t156 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t156 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 .b157 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 .b157 big 0 0
    const (64) int 6 0
ecom: 
name line string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b157 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 .t154 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 .b158 (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 .b158 (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 .b158 (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 .b158 (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 .b158 (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 .t154 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 .b157 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 .t154 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 .b157 big 0 0
ecom: 
name s string 0 0
ecom to: 
* string 8 1
  name .b157 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 .t154 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 .b157 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 .t154 int 0 0
ecom: 
len int 10 1
  name status array of string 0 0
ecom to: 
name .t154 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 .t154 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 .t156 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 .b157 big 0 0
ecom: 
= string 10 1
  name .t156 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t156 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 .t154 int ref 1
144: local status array of string ref 9
152: local .b157 big ref 8
160: local buf array of byte ref 4
168: local r string ref 3
176: local .b155 big ref 2
184: local .t156 string ref 1
192: local .b158 (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 .t154 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 .b157 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 .b155 type big offset 176 (d->offset=176 start=0) returns -1
descmap .t156 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 .b158 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 .t159 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 .t159 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 .t159 int 0 0
ecom: 
len int 10 1
  name status string 0 0
ecom to: 
name .t159 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 .t159 int 0 0
ecom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom to: 
name .t160 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 .t162 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 .b163 big 0 0
    const (64) int 6 0
ecom: 
name status string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b163 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 .b161 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 .b161 big 0 0
    const (72) int 6 0
ecom: 
name .t162 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b161 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t162 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t162 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 .t160 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 .t160 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 .t160 int 0 0
ecom: 
len int 10 1
  name status string 0 0
ecom to: 
name .t160 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 .t160 int 0 0
ecom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom to: 
name .t159 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 .t162 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 .b161 big 0 0
    const (64) int 6 0
ecom: 
name status string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b161 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 .b163 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 .b163 big 0 0
    const (72) int 6 0
ecom: 
name .t162 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b163 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t162 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t162 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 .t160 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 .t159 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 .t159 int ref 1
88: local .t160 int ref 1
96: local .b161 big ref 2
104: local .b163 big ref 2
112: local .t162 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 .t159 type int offset 84 (d->offset=84 start=0) returns -1
descmap .t160 type int offset 88 (d->offset=88 start=0) returns -1
descmap .b161 type big offset 96 (d->offset=96 start=0) returns -1
descmap .b163 type big offset 104 (d->offset=104 start=0) returns -1
descmap .t162 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 .t164 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
generate desc for ref Sys->FD
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 .b166 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b167 big 0 0
    const (64) int 6 0
ecom: 
name .b166 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b165 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .b166 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b166 ref Sys->FD 0 0
ecom: 
const sh panic: %s
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b165 big 0 0
    const (72) int 6 0
ecom: 
name s string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b165 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 .t164 int ref 1
80: local .b165 big ref 1
88: local .b166 ref Sys->FD ref 1
96: local .b167 big ref 1
generate desc for panic
descmap offset 0
descmap s type string offset 64 (d->offset=64 start=0) returns 64
descmap .t164 type int offset 72 (d->offset=72 start=0) returns -1
descmap .b165 type big offset 80 (d->offset=80 start=0) returns -1
descmap .b166 type ref Sys->FD offset 88 (d->offset=88 start=0) returns 88
descmap .b167 type big offset 96 (d->offset=96 start=0) returns -1
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 .t168 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
generate desc for ref Localenv
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 .b169 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b169 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b169 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b169 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 .t168 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
generate desc for ref Sys->FD
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 .b169 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b171 big 0 0
    const (64) int 6 0
ecom: 
name .b169 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b170 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .b169 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b169 ref Sys->FD 0 0
ecom: 
const sh: %s
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b170 big 0 0
    const (72) int 6 0
ecom: 
name s string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b170 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 .t168 int ref 1
88: local .b169 ref Localenv ref 3
96: local .b170 big ref 1
104: local .b171 big 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 .t168 type int offset 80 (d->offset=80 start=0) returns -1
descmap .b169 type ref Localenv offset 88 (d->offset=88 start=0) returns 88
descmap .b170 type big offset 96 (d->offset=96 start=0) returns -1
descmap .b171 type big offset 104 (d->offset=104 start=0) returns -1
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 .t173 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 ref Context
generate desc for ref Context
	desc	$-1,8,"80"
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 .b174 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 .b174 ref Context 0 0
    const (0) int 6 0
generate desc for ref Environment
generate desc for ref Environment
	desc	$-1,8,"80"
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 .b175 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 .b175 ref Environment 0 0
    const (0) int 6 0
generate desc for ref Builtins
generate desc for ref Builtins
	desc	$-1,8,"80"
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 .b176 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 .b176 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 .b176 ref Builtins 0 0
    const (8) int 6 0
ecom: 
= ref Builtins 10 1
  name .b176 ref Builtins 0 0
  name nil ref Builtins 1 0
ecom: 
name nil ref Builtins 1 0
ecom to: 
name .b176 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 .b175 ref Environment 0 0
    const (8) int 6 0
generate desc for ref Builtins
generate desc for ref Builtins
	desc	$-1,8,"80"
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 .b176 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 .b176 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 .b176 ref Builtins 0 0
    const (8) int 6 0
ecom: 
= ref Builtins 10 1
  name .b176 ref Builtins 0 0
  name nil ref Builtins 1 0
ecom: 
name nil ref Builtins 1 0
ecom to: 
name .b176 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 .b175 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 .b175 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 .b172 big 0 0
    const (64) int 6 0
ecom: 
= ref Environment 10 1
  name .b175 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b175 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 .b174 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 .b174 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 .b174 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 .t177 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 .t177 list of int 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t177 list of int 0 0
ecom: 
= list of int 10 1
  name .t177 list of int 0 0
  name nil list of int 1 0
ecom: 
name nil list of int 1 0
ecom to: 
name .t177 list of int 0 0
ecom: 
= ref Context 10 1
  name .b174 ref Context 0 0
  name nil ref Context 1 0
ecom: 
name nil ref Context 1 0
ecom to: 
name .b174 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 .t177 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b172 big 0 0
    const (64) int 6 0
ecom: 
name myself Sh 1 0
ecom to: 
* Sh 8 0
  + int 15 0
    name .b172 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t177 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t177 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
generate desc for ref Localenv
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 .b176 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b176 ref Environment 0 0
ecom: 
const VERBOSE (2) int 6 0
ecom to: 
* int 8 1
  + int 15 1
    name .b176 ref Localenv 0 0
    const flags (16) int 6 0
ecom: 
= ref Localenv 10 1
  name .b176 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b176 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 .b172 big 0 0
    const (64) int 6 0
ecom: 
const autoload string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b172 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name vl list of ref Listnode 0 0
ecom to: 
name .b176 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b176 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b176 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
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name vl list of ref Listnode 0 0
ecom to: 
name .b176 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b176 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b176 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 .t177 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b172 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 .b172 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
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name vl list of ref Listnode 0 0
ecom to: 
name .b176 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b176 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b176 ref Listnode 0 0
ecom: 
= string 10 1
  name .t177 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t177 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 .t173 int ref 1
80: local .b172 big ref 7
88: local .b176 ref Builtins ref 7
96: local ctxt ref Context ref 7
104: local vl list of ref Listnode ref 7
112: local .b174 ref Context ref 1
120: local .b175 ref Environment ref 1
128: local .t177 list of int 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 .t173 type int offset 72 (d->offset=72 start=0) returns -1
descmap .b172 type big offset 80 (d->offset=80 start=0) returns -1
descmap .b176 type ref Builtins offset 88 (d->offset=88 start=0) returns 88
descmap ctxt type ref Context offset 96 (d->offset=96 start=0) returns 96
descmap vl type list of ref Listnode offset 104 (d->offset=104 start=0) returns 104
descmap .b174 type ref Context offset 112 (d->offset=112 start=0) returns 112
descmap .b175 type ref Environment offset 120 (d->offset=120 start=0) returns 120
descmap .t177 type list of int offset 128 (d->offset=128 start=0) returns 128
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 ref Context
generate desc for ref Context
	desc	$-1,8,"80"
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 .b178 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 .b178 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 .b178 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 .b178 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 .b178 ref Context 0 0
    const (24) int 6 0
ecom: 
= ref Context 10 1
  name .b178 ref Context 0 0
  name nil ref Context 1 0
ecom: 
name nil ref Context 1 0
ecom to: 
name .b178 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 .t180 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 ref Environment
generate desc for ref Environment
	desc	$-1,8,"80"
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 .b178 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 .b178 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 .b179 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name ctxt ref Context 0 0
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b181 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b181 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b181 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 .b178 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 .b179 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b181 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b181 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b181 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 .b178 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b181 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b181 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b181 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 .b178 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 .b179 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b181 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b181 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b181 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b178 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b178 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 .t180 int ref 1
80: local .b179 big ref 5
88: local .b181 ref Environment ref 4
96: local nctxt ref Context ref 3
104: local .b178 ref Context ref 2
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 .t180 type int offset 76 (d->offset=76 start=0) returns -1
descmap .b179 type big offset 80 (d->offset=80 start=0) returns -1
descmap .b181 type ref Environment offset 88 (d->offset=88 start=0) returns 88
descmap nctxt type ref Context offset 96 (d->offset=96 start=0) returns 96
descmap .b178 type ref Context 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b182 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b182 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b182 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 .b183 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 .b183 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 .b183 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b183 big 0 0
    const (72) int 6 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b183 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 .t184 int 0 0
generate desc for big
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b183 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 .b183 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b183 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 .b183 big 0 0
    const (80) int 6 0
generate desc for ref Var
generate desc for ref Var
	desc	$-1,8,"80"
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 .b182 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 .b182 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 .b182 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 .b182 ref Var 0 0
    const (16) int 6 0
ecom: 
= ref Var 10 1
  name .b182 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b182 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 .t184 int ref 1
104: local e ref Localenv ref 7
112: local .b183 big ref 4
120: local v ref Var ref 4
128: local .b182 ref Environment ref 2
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 .t184 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 .b183 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 .b182 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 .t185 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 .t185 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 .t185 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 .t185 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 .t185 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 .t185 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 .t185 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 .b186 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b187 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b187 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b187 ref Environment 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b186 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 .b186 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b186 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 .t185 int ref 1
96: local v ref Var ref 4
104: local .b186 big ref 2
112: local .b187 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 .t185 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 .b186 type big offset 104 (d->offset=104 start=0) returns -1
descmap .b187 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b188 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b188 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b188 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 .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
      * 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 .b190 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 .b190 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 .b190 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
generate desc for ref Var
generate desc for ref Var
	desc	$-1,8,"80"
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 .b188 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 .b190 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b190 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 .b190 big 0 0
    const (80) int 6 0
ecom: 
= ref Var 10 1
  name .b188 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b188 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 .b190 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b190 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 .b190 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 .b190 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 .b191 (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 .b191 (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 .b191 (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 .b191 (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 .b191 (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 .b191 (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 .b191 (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 .t189 int ref 1
88: local e ref Localenv ref 7
96: local .b190 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 .b188 ref Environment ref 2
160: local .b191 (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 .t189 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 .b190 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 .b188 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 .b191 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b192 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b192 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b192 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 .b193 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 .b193 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 .b193 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b193 big 0 0
    const (72) int 6 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b193 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 .t194 int 0 0
generate desc for big
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b193 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 .b193 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b193 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 .b193 big 0 0
    const (80) int 6 0
generate desc for ref Var
generate desc for ref Var
	desc	$-1,8,"80"
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 .b192 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 .b192 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 .b192 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 .b192 ref Var 0 0
    const (16) int 6 0
ecom: 
= ref Var 10 1
  name .b192 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b192 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 .t194 int ref 1
104: local .b193 big ref 4
112: local e ref Localenv ref 4
120: local v ref Var ref 4
128: local .b192 ref Environment ref 2
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 .t194 type int offset 96 (d->offset=96 start=0) returns -1
descmap .b193 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 .b192 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b195 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 .b195 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 .b196 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b197 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b197 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b197 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b195 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b195 ref Environment 0 0
fn: push
64: argument ctxt ref Context ref 2
72: local .b195 ref Environment ref 1
80: local .b196 big ref 1
88: local .b197 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 .b195 type ref Environment offset 72 (d->offset=72 start=0) returns 72
descmap .b196 type big offset 80 (d->offset=80 start=0) returns -1
descmap .b197 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
generate desc for ref Localenv
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 .b198 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b198 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b198 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b198 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 .b199 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
generate desc for ref Localenv
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 .b198 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b198 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b198 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b198 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b198 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 .b198 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
generate desc for ref Localenv
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 .b200 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b200 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b200 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b200 ref Localenv 0 0
ecom: 
= ref Environment 10 1
  name .b198 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b198 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 .t201 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 .b199 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
generate desc for ref Var
generate desc for ref Var
	desc	$-1,8,"80"
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 .b200 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 .b199 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b198 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b198 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b198 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 .b199 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
generate desc for ref Var
generate desc for ref Var
	desc	$-1,8,"80"
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .b198 ref Var 0 0
ecom: 
= ref Var 10 1
  name .b198 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b198 ref Var 0 0
ecom: 
= ref Var 10 1
  name .b200 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b200 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 .b199 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 .b199 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
generate desc for ref Var
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .b200 ref Var 0 0
ecom: 
= ref Var 10 1
  name .b200 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b200 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 .b199 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 .t201 int ref 1
80: local .b198 ref Localenv ref 7
88: local vl list of ref Var ref 6
96: local .b199 big ref 4
104: local .b200 ref Localenv ref 4
112: local oldv array of list of ref Var ref 3
120: local v ref Var ref 2
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 .t201 type int offset 76 (d->offset=76 start=0) returns -1
descmap .b198 type ref Localenv 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 .b199 type big offset 96 (d->offset=96 start=0) returns -1
descmap .b200 type ref Localenv offset 104 (d->offset=104 start=0) returns 104
descmap oldv type array of list of ref Var offset 112 (d->offset=112 start=0) returns 112
descmap v type ref Var 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .b202 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b202 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b202 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
generate desc for ref Listnode
ecom: 
hd ref Listnode 10 1
  name args list of ref Listnode 0 0
ecom to: 
name .b202 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b202 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b202 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 .t203 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 .b204 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 .b204 big 0 0
    const (72) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b204 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 .t203 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
generate desc for ref Localenv
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 .b202 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b202 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b202 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b202 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 .t203 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
generate desc for ref Sys->FD
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 .b202 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b205 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 .t206 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 .b205 big 0 0
    const (64) int 6 0
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b205 big 0 0
    const (72) int 6 0
ecom: 
name .b202 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b204 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .b202 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b202 ref Sys->FD 0 0
ecom: 
const %s
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b204 big 0 0
    const (72) int 6 0
ecom: 
name .t206 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b204 big 0 0
    const (80) int 6 0
ecom: 
= string 10 1
  name .t206 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t206 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 .b205 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 .b205 big 0 0
    const (72) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b205 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 .b205 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 .b205 big 0 0
    const (72) int 6 0
ecom: 
name last int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b205 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 .t203 int ref 1
112: local .b202 ref Listnode ref 5
120: local .b205 big ref 4
128: local cmd ref Listnode ref 3
136: local .b204 big ref 2
144: local .t206 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 .t203 type int offset 104 (d->offset=104 start=0) returns -1
descmap .b202 type ref Listnode offset 112 (d->offset=112 start=0) returns 112
descmap .b205 type big offset 120 (d->offset=120 start=0) returns -1
descmap cmd type ref Listnode offset 128 (d->offset=128 start=0) returns 128
descmap .b204 type big offset 136 (d->offset=136 start=0) returns -1
descmap .t206 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 .t207 string 0 0
generate desc for big
ecom: 
name ctxt ref Context 0 0
ecom to: 
* ref Context 8 0
  + int 15 0
    name .b208 big 0 0
    const (64) int 6 0
ecom: 
name myself Sh 1 0
ecom to: 
* Sh 8 0
  + int 15 0
    name .b208 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t207 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t207 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b209 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 .b209 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 .b210 (string, Shellbuiltin) 0 0
ecom: 
name name string 0 0
ecom to: 
* string 0 0
  + int 13 1
    adr int 13 1
      name .b210 (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 .b210 (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 .t207 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b211 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b211 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b211 ref Environment 0 0
generate desc for (string, Shellbuiltin)
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name .b210 (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 .b210 (string, Shellbuiltin) 0 0
ecom: 
= Shellbuiltin 10 1
  * Shellbuiltin 0 0
    + int 13 1
      adr int 13 1
        name .b210 (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 .b210 (string, Shellbuiltin) 0 0
    const t1 (8) int 6 0
ecom: 
= list of (string, Shellbuiltin) 10 1
  name .t207 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 .t207 list of (string, Shellbuiltin) 0 0
ecom: 
= ref Environment 10 1
  name .b209 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b209 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 .b208 big ref 2
96: local .b209 ref Environment ref 1
104: local .b211 ref Environment ref 1
112: local .t207 string ref 1
120: local .b210 (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 .b208 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b209 type ref Environment offset 96 (d->offset=96 start=0) returns 96
descmap .b211 type ref Environment offset 104 (d->offset=104 start=0) returns 104
descmap .t207 type string offset 112 (d->offset=112 start=0) returns 112
descmap adt offset 120
descmap offset 120
descmap t0 type string offset 120 (d->offset=0 start=120) returns 120
descmap t1 type Shellbuiltin offset 128 (d->offset=8 start=120) returns 128
descmap .b210 type (string, Shellbuiltin) offset 120 (d->offset=120 start=0) returns 128
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 .b212 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name c ref Context 0 0
ecom to: 
name .b213 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b213 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b213 ref Environment 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b212 big 0 0
    const (72) int 6 0
ecom: 
name mod Shellbuiltin 0 0
ecom to: 
* Shellbuiltin 8 0
  + int 15 0
    name .b212 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 .b212 big ref 1
96: local .b213 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 .b212 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b213 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 .b214 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name c ref Context 0 0
ecom to: 
name .b215 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b215 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b215 ref Environment 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b214 big 0 0
    const (72) int 6 0
ecom: 
name mod Shellbuiltin 0 0
ecom to: 
* Shellbuiltin 8 0
  + int 15 0
    name .b214 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 .b214 big ref 1
96: local .b215 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 .b214 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b215 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 .b216 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name c ref Context 0 0
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name c ref Context 0 0
ecom to: 
name .b217 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b217 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b217 ref Environment 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b216 big 0 0
    const (72) int 6 0
ecom: 
name mod Shellbuiltin 0 0
ecom to: 
* Shellbuiltin 8 0
  + int 15 0
    name .b216 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 .b216 big ref 1
96: local .b217 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 .b216 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b217 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 .b218 big 0 0
    const (64) int 6 0
eacom: 
* ref Builtins 10 1
  * ref Environment 8 0
    name c ref Context 0 0
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name c ref Context 0 0
ecom to: 
name .b219 ref Environment 0 0
ecom: 
= ref Environment 10 1
  name .b219 ref Environment 0 0
  name nil ref Environment 1 0
ecom: 
name nil ref Environment 1 0
ecom to: 
name .b219 ref Environment 0 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b218 big 0 0
    const (72) int 6 0
ecom: 
name mod Shellbuiltin 0 0
ecom to: 
* Shellbuiltin 8 0
  + int 15 0
    name .b218 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 .b218 big ref 1
96: local .b219 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 .b218 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b219 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 .b220 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 .b220 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 .b220 big 0 0
eacom: 
* string 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
generate desc for ref Var
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .b221 ref Var 0 0
ecom: 
= ref Var 10 1
  name .b221 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b221 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 .b220 big ref 2
104: local .b221 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 .b220 type big offset 96 (d->offset=96 start=0) returns -1
descmap .b221 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 .t222 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
generate desc for ref Localenv
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 .b223 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b223 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b223 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b223 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 .t222 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
generate desc for ref Sys->FD
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 .b223 ref Sys->FD 0 0
generate desc for big
ecom: 
const (2) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b225 big 0 0
    const (64) int 6 0
ecom: 
name .b223 ref Sys->FD 0 0
ecom to: 
* ref Sys->FD 8 0
  + int 15 0
    name .b224 big 0 0
    const (64) int 6 0
ecom: 
= ref Sys->FD 10 1
  name .b223 ref Sys->FD 0 0
  name nil ref Sys->FD 1 0
ecom: 
name nil ref Sys->FD 1 0
ecom to: 
name .b223 ref Sys->FD 0 0
ecom: 
const %s
 string 1 0
ecom to: 
* string 8 0
  + int 15 0
    name .b224 big 0 0
    const (72) int 6 0
ecom: 
name err string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b224 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 .t226 string 0 0
ecom: 
= string 10 1
  name .t226 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t226 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 .t222 int ref 1
96: local .b223 ref Localenv ref 3
104: local .b224 big ref 1
112: local .b225 big ref 1
120: local .t226 string 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 .t222 type int offset 88 (d->offset=88 start=0) returns -1
descmap .b223 type ref Localenv offset 96 (d->offset=96 start=0) returns 96
descmap .b224 type big offset 104 (d->offset=104 start=0) returns -1
descmap .b225 type big offset 112 (d->offset=112 start=0) returns -1
descmap .t226 type string offset 120 (d->offset=120 start=0) returns 120
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
generate desc for ref Localenv
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 .b227 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b227 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b227 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b227 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
generate desc for ref Localenv
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 .b227 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b227 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b227 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b227 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
generate desc for ref Localenv
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 .b227 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b227 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 .t228 int 0 0
ecom: 
= ref Localenv 10 1
  name .b227 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b227 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 .t228 int ref 1
88: local .b227 ref Localenv ref 6
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 .t228 type int offset 84 (d->offset=84 start=0) returns -1
descmap .b227 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
generate desc for ref Localenv
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 .b229 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
generate desc for ref Environment
ecom: 
* ref Environment 8 0
  name ctxt ref Context 0 0
ecom to: 
name .b229 ref Environment 0 0
ecom: 
= ref Localenv 10 1
  name .b229 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b229 ref Localenv 0 0
fn: options
64: argument ctxt ref Context ref 1
72: local .b229 ref Localenv ref 2
generate desc for Context.options
descmap offset 0
descmap ctxt type ref Context offset 64 (d->offset=64 start=0) returns 64
descmap .b229 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 .t230 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 .t231 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 .t231 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 .t230 int ref 1
92: local .t231 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 .t230 type int offset 88 (d->offset=88 start=0) returns -1
descmap .t231 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 .b232 big 0 0
eacom: 
* string 10 1
  hd ref Var 10 1
    name ent list of ref Var 0 0
generate desc for ref Var
generate desc for ref Var
	desc	$-1,8,"80"
ecom: 
hd ref Var 10 1
  name ent list of ref Var 0 0
ecom to: 
name .b233 ref Var 0 0
ecom: 
= ref Var 10 1
  name .b233 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b233 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 .b232 big ref 1
104: local .b233 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 .b232 type big offset 96 (d->offset=96 start=0) returns -1
descmap .b233 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 .b234 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 .b234 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 .t235 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 .b236 big 0 0
ecom: 
= list of ref Var 10 1
  name .t235 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 .t235 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 .b234 big ref 1
96: local .b236 big ref 1
104: local .t235 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 .b234 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b236 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t235 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 .t237 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 .t237 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 .b238 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 .b238 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
generate desc for ref Var
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .b239 ref Var 0 0
ecom: 
= ref Var 10 1
  name .b239 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b239 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 .b238 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
generate desc for ref Var
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 .b239 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 .b238 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b238 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 .b238 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
generate desc for ref Var
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .b240 ref Var 0 0
ecom: 
= ref Var 10 1
  name .b240 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b240 ref Var 0 0
ecom: 
= ref Var 10 1
  name .b239 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b239 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 .b238 big 0 0
    const (64) int 6 0
ecom: 
name idx int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b238 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 .b238 big 0 0
    const (80) int 6 0
generate desc for ref Var
generate desc for ref Var
	desc	$-1,8,"80"
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 .b240 ref Var 0 0
eacom: 
* Var 10 1
  hd ref Var 10 1
    name vl list of ref Var 0 0
generate desc for ref Var
ecom: 
hd ref Var 10 1
  name vl list of ref Var 0 0
ecom to: 
name .b239 ref Var 0 0
generate desc for Var
ecom: 
= ref Var 10 1
  name .b239 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b239 ref Var 0 0
ecom: 
= ref Var 10 1
  name .b240 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b240 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 ref Localenv
generate desc for ref Localenv
	desc	$-1,8,"80"
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 .b240 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 .b240 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 .b240 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 .b240 ref Localenv 0 0
    const (16) int 6 0
ecom: 
= ref Localenv 10 1
  name .b240 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b240 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 .t237 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 .b238 big ref 4
112: local .b239 ref Var ref 3
120: local .b240 ref Var ref 3
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 .t237 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 .b238 type big offset 104 (d->offset=104 start=0) returns -1
descmap .b239 type ref Var offset 112 (d->offset=112 start=0) returns 112
descmap .b240 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 ref Localenv
generate desc for ref Localenv
	desc	$-1,8,"80"
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 .b241 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 .b241 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 .b241 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 .b241 ref Localenv 0 0
    const (16) int 6 0
ecom: 
= ref Localenv 10 1
  name .b241 ref Localenv 0 0
  name nil ref Localenv 1 0
ecom: 
name nil ref Localenv 1 0
ecom to: 
name .b241 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 .t243 int 0 0
generate desc for big
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b244 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 .b244 big 0 0
    const (72) int 6 0
generate desc for ref Var
generate desc for ref Var
	desc	$-1,8,"80"
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 .b241 ref Var 0 0
generate desc for ref Var
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 .b241 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 .b241 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 .b241 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 .t245 list of string 0 0
generate desc for big
ecom: 
name val string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b246 big 0 0
    const (64) int 6 0
ecom: 
name .t245 list of string 0 0
ecom to: 
* list of string 8 0
  + int 15 0
    name .b244 big 0 0
    const (64) int 6 0
ecom: 
= list of string 10 1
  name .t245 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t245 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 .b241 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 .b242 big 0 0
    const (64) int 6 0
ecom: 
name .t243 int 0 0
ecom to: 
* int 8 0
  + int 15 0
    name .b242 big 0 0
    const (72) int 6 0
ecom: 
name .b241 ref Var 0 0
ecom to: 
* ref Var 8 0
  + int 15 0
    name .b242 big 0 0
    const (80) int 6 0
ecom: 
= ref Var 10 1
  name .b241 ref Var 0 0
  name nil ref Var 1 0
ecom: 
name nil ref Var 1 0
ecom to: 
name .b241 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 .t243 int ref 1
80: local e ref Localenv ref 5
88: local vl list of (string, string) ref 5
96: local .b241 ref Localenv ref 3
104: local name string ref 3
112: local val string ref 2
120: local .b242 big ref 2
128: local .b244 big ref 2
136: local .b246 big ref 1
144: local .t245 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 .t243 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 .b241 type ref Localenv offset 96 (d->offset=96 start=0) returns 96
descmap name type string offset 104 (d->offset=104 start=0) returns 104
descmap val type string offset 112 (d->offset=112 start=0) returns 112
descmap .b242 type big offset 120 (d->offset=120 start=0) returns -1
descmap .b244 type big offset 128 (d->offset=128 start=0) returns -1
descmap .b246 type big offset 136 (d->offset=136 start=0) returns -1
descmap .t245 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 ref Builtins
generate desc for ref Builtins
	desc	$-1,8,"80"
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 .b247 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 .b247 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 .b247 ref Builtins 0 0
    const (8) int 6 0
ecom: 
= ref Builtins 10 1
  name .b247 ref Builtins 0 0
  name nil ref Builtins 1 0
ecom: 
name nil ref Builtins 1 0
ecom to: 
name .b247 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 .t248 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 .t249 int 0 0
ecom: 
* array of (string, list of Shellbuiltin) 8 0
  name b ref Builtins 0 0
ecom to: 
name .t248 array of (string, list of Shellbuiltin) 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 1
  name .t248 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 .t248 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 .t249 int ref 1
80: local nb ref Builtins ref 3
88: local .b247 ref Builtins ref 1
96: local .t248 array of (string, list of Shellbuiltin) ref 1
generate desc for copybuiltins
descmap offset 0
descmap b type ref Builtins offset 64 (d->offset=64 start=0) returns 64
descmap .t249 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 .b247 type ref Builtins offset 88 (d->offset=88 start=0) returns 88
descmap .t248 type array of (string, list of Shellbuiltin) offset 96 (d->offset=96 start=0) returns 96
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 .t250 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 .t250 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 .b251 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 .t250 int ref 1
96: local bname string ref 3
104: local bmod list of Shellbuiltin ref 2
112: local .b251 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 .t250 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 .b251 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 .b252 big 0 0
    const (64) int 6 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b252 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 .t253 Shellbuiltin 0 0
ecom: 
= Shellbuiltin 10 1
  name .t253 Shellbuiltin 0 0
  name nil Shellbuiltin 1 0
ecom: 
name nil Shellbuiltin 1 0
ecom to: 
name .t253 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 .t253 list of Shellbuiltin 0 0
ecom: 
= list of Shellbuiltin 10 1
  name .t253 list of Shellbuiltin 0 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
name .t253 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 .b254 (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 .b254 (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 .b254 (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 .b252 big 0 0
ecom: 
name .b254 (string, list of Shellbuiltin) 0 0
ecom to: 
* (string, list of Shellbuiltin) 8 1
  name .b252 big 0 0
generate desc for (string, list of Shellbuiltin)
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name .b254 (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 .b254 (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 .b254 (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 .b254 (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 .t253 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 .t255 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 .t256 int 0 0
ecom: 
* array of (string, list of Shellbuiltin) 8 0
  name b ref Builtins 0 0
ecom to: 
name .t253 array of (string, list of Shellbuiltin) 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 1
  name .t253 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 .t253 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 .b254 (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 .b254 (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 .b254 (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 .b252 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 .t256 int 0 0
ecom: 
name .b254 (polymorphic type, polymorphic type) 0 0
ecom to: 
* (polymorphic type, polymorphic type) 8 1
  name .b252 big 0 0
generate desc for (polymorphic type, polymorphic type)
ecom: 
= polymorphic type 10 1
  * polymorphic type 0 0
    adr int 13 1
      name .b254 (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 .b254 (polymorphic type, polymorphic type) 0 0
ecom: 
= polymorphic type 10 1
  * polymorphic type 0 0
    + int 13 1
      adr int 13 1
        name .b254 (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 .b254 (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 .t255 int ref 1
108: local .t256 int ref 1
112: local .b252 big ref 3
120: local .b254 (string, list of Shellbuiltin) ref 2
136: local .t253 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 .t255 type int offset 104 (d->offset=104 start=0) returns -1
descmap .t256 type int offset 108 (d->offset=108 start=0) returns -1
descmap .b252 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 .b254 type (string, list of Shellbuiltin) offset 120 (d->offset=120 start=0) returns 128
descmap .t253 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 .b257 big 0 0
    const (64) int 6 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b257 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 .t258 Shellbuiltin 0 0
ecom: 
= Shellbuiltin 10 1
  name .t258 Shellbuiltin 0 0
  name nil Shellbuiltin 1 0
ecom: 
name nil Shellbuiltin 1 0
ecom to: 
name .t258 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 .b259 (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 .b259 (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 .b259 (string, list of Shellbuiltin) 0 0
    const (8) int 6 0
ecom: 
name bmods list of Shellbuiltin 0 0
ecom to: 
name .t258 list of Shellbuiltin 0 0
ecom: 
= list of Shellbuiltin 10 1
  name .t258 list of Shellbuiltin 0 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
name .t258 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 .b257 big 0 0
ecom: 
name .b259 (string, list of Shellbuiltin) 0 0
ecom to: 
* (string, list of Shellbuiltin) 8 1
  name .b257 big 0 0
generate desc for (string, list of Shellbuiltin)
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name .b259 (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 .b259 (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 .b259 (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 .b259 (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 .b259 (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 .b259 (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 .b259 (string, list of Shellbuiltin) 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t258 list of Shellbuiltin 0 0
ecom: 
= list of Shellbuiltin 10 1
  name .t258 list of Shellbuiltin 0 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
name .t258 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 .b257 big 0 0
ecom: 
name .b259 (string, list of Shellbuiltin) 0 0
ecom to: 
* (string, list of Shellbuiltin) 8 1
  name .b257 big 0 0
generate desc for (string, list of Shellbuiltin)
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name .b259 (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 .b259 (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 .b259 (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 .b259 (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 .t260 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 .t261 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 .t261 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 .t258 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 .t261 int 0 0
ecom: 
* array of (string, list of Shellbuiltin) 8 0
  name b ref Builtins 0 0
ecom to: 
name .t258 array of (string, list of Shellbuiltin) 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 1
  name .t258 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 .t258 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 .t261 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 .t258 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 .t260 int 0 0
ecom: 
* array of (string, list of Shellbuiltin) 8 0
  name b ref Builtins 0 0
ecom to: 
name .t258 array of (string, list of Shellbuiltin) 0 0
ecom: 
= array of (string, list of Shellbuiltin) 10 1
  name .t258 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 .t258 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 .b259 (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 .b259 (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 .b259 (string, list of Shellbuiltin) 0 0
    const (8) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t258 list of Shellbuiltin 0 0
ecom: 
= list of Shellbuiltin 10 1
  name .t258 list of Shellbuiltin 0 0
  name nil list of Shellbuiltin 1 0
ecom: 
name nil list of Shellbuiltin 1 0
ecom to: 
name .t258 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 .b257 big 0 0
ecom: 
name .b259 (string, list of Shellbuiltin) 0 0
ecom to: 
* (string, list of Shellbuiltin) 8 1
  name .b257 big 0 0
generate desc for (string, list of Shellbuiltin)
ecom: 
= string 10 1
  * string 0 0
    adr int 13 1
      name .b259 (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 .b259 (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 .b259 (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 .b259 (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 .t260 int ref 1
108: local .t261 int ref 1
112: local .b257 big ref 4
120: local nb array of (string, list of Shellbuiltin) ref 3
128: local .b259 (string, list of Shellbuiltin) ref 3
144: local .t258 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 .t260 type int offset 104 (d->offset=104 start=0) returns -1
descmap .t261 type int offset 108 (d->offset=108 start=0) returns -1
descmap .b257 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 .b259 type (string, list of Shellbuiltin) offset 128 (d->offset=128 start=0) returns 136
descmap .t258 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 .b262 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 .t263 Shellbuiltin 0 0
ecom: 
= Shellbuiltin 10 1
  name .t263 Shellbuiltin 0 0
  name nil Shellbuiltin 1 0
ecom: 
name nil Shellbuiltin 1 0
ecom to: 
name .t263 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 .b262 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 .t264 int 0 0
ecom: 
name name (string, list of Shellbuiltin) 0 0
ecom to: 
* (string, list of Shellbuiltin) 8 1
  name .b262 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 .b265 (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 .b265 (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 .b265 (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 .b262 big 0 0
ecom: 
name .b265 (polymorphic type, polymorphic type) 0 0
ecom to: 
* (polymorphic type, polymorphic type) 8 1
  name .b262 big 0 0
generate desc for (polymorphic type, polymorphic type)
ecom: 
= polymorphic type 10 1
  * polymorphic type 0 0
    adr int 13 1
      name .b265 (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 .b265 (polymorphic type, polymorphic type) 0 0
ecom: 
= polymorphic type 10 1
  * polymorphic type 0 0
    + int 13 1
      adr int 13 1
        name .b265 (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 .b265 (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 .t264 int ref 1
96: local .b262 big ref 3
104: local name string ref 2
112: local bmods list of Shellbuiltin ref 6
120: local .t263 Shellbuiltin ref 1
128: local .b265 (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 .t264 type int offset 88 (d->offset=88 start=0) returns -1
descmap .b262 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 .t263 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 .b265 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 .b266 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 .t267 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 .b266 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 .t267 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 .t267 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 .b266 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 .b266 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 .t267 int ref 1
80: local v ref Var ref 6
88: local vl list of ref Var ref 5
96: local .b266 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 .t267 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 .b266 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name val list of ref Listnode 0 0
ecom to: 
name .b268 ref Listnode 0 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t269 list of ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b268 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b268 ref Listnode 0 0
ecom: 
= list of ref Listnode 10 1
  name .t269 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 .t269 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 .b268 ref Listnode ref 1
88: local .t269 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 .b268 type ref Listnode offset 80 (d->offset=80 start=0) returns 80
descmap .t269 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 .t270 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 .t272 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 .b273 big 0 0
    const (64) int 6 0
ecom: 
const (1) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b273 big 0 0
    const (72) int 6 0
ecom: 
name name string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b271 big 0 0
    const (64) int 6 0
ecom: 
name .t272 string 0 0
ecom to: 
* string 8 0
  + int 15 0
    name .b271 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t272 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t272 string 0 0
fn: setenv
64: argument name string ref 1
72: argument val list of ref Listnode ref 1
80: local .t270 int ref 1
88: local .b271 big ref 1
96: local .b273 big ref 1
104: local .t272 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 .t270 type int offset 80 (d->offset=80 start=0) returns -1
descmap .b271 type big offset 88 (d->offset=88 start=0) returns -1
descmap .b273 type big offset 96 (d->offset=96 start=0) returns -1
descmap .t272 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 .t274 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 .t274 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 .t274 int 0 0
ecom: 
len int 10 1
  name s string 0 0
ecom to: 
name .t274 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 .t274 int 0 0
ecom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom to: 
name .t275 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 .t274 int ref 1
80: local .t275 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 .t274 type int offset 76 (d->offset=76 start=0) returns -1
descmap .t275 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 .t276 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 .t276 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 .t276 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 .t276 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 .t276 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 .t276 int 0 0
ecom: 
len int 10 1
  name word string 0 0
ecom to: 
name .t276 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 .t276 int 0 0
ecom: 
+ int 15 1
  name i int 0 0
  const (1) int 6 0
ecom to: 
name .t277 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 .t277 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 .t277 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 .t276 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 .t276 int ref 1
80: local .t277 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 .t276 type int offset 76 (d->offset=76 start=0) returns -1
descmap .t277 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 .t278 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 .t278 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 .t278 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 .t278 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 .t278 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 .t279 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 .b280 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 .b280 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 .b280 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 .t281 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 .b280 big 0 0
    const (64) int 6 0
ecom: 
name nil polymorphic type 1 0
ecom to: 
name .t282 list of string 0 0
ecom: 
= string 10 1
  name .t281 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t281 string 0 0
ecom: 
= list of string 10 1
  name .t282 list of string 0 0
  name nil list of string 1 0
ecom: 
name nil list of string 1 0
ecom to: 
name .t282 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b283 ref Listnode 0 0
generate desc for ref Listnode
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 .b283 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 .b283 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 .b283 ref Listnode 0 0
    const (8) int 6 0
ecom: 
= ref Listnode 10 1
  name .b283 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b283 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 .b280 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 .t279 int ref 1
80: local files list of string ref 7
88: local .b280 big ref 5
96: local n ref Listnode ref 5
104: local new list of ref Listnode ref 5
112: local .b283 ref Listnode ref 2
120: local qword string ref 2
128: local ret list of ref Listnode ref 2
136: local .t281 string ref 1
144: local .t282 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 .t279 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 .b280 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 .b283 type ref Listnode offset 112 (d->offset=112 start=0) returns 112
descmap qword type string offset 120 (d->offset=120 start=0) returns 120
descmap ret type list of ref Listnode offset 128 (d->offset=128 start=0) returns 128
descmap .t281 type string offset 136 (d->offset=136 start=0) returns 136
descmap .t282 type list of string offset 144 (d->offset=144 start=0) returns 144
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 .b284 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 .b284 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 .b284 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 .b284 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
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 .b285 ref Listnode 0 0
generate desc for ref Listnode
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 .b285 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 .b285 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 .b285 ref Listnode 0 0
    const (8) int 6 0
ecom: 
= ref Listnode 10 1
  name .b285 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b285 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 .b286 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 .b285 ref Listnode ref 2
88: local .b286 big 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 .b285 type ref Listnode offset 80 (d->offset=80 start=0) returns 80
descmap .b286 type big offset 88 (d->offset=88 start=0) returns -1
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 .t287 string 0 0
ecom: 
= string 10 1
  name .t287 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t287 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 .t287 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 .t287 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
generate desc for ref Listnode
generate desc for ref Listnode
	desc	$-1,8,"80"
ecom: 
hd ref Listnode 10 1
  name l list of ref Listnode 0 0
ecom to: 
name .b288 ref Listnode 0 0
ecom: 
= ref Listnode 10 1
  name .b288 ref Listnode 0 0
  name nil ref Listnode 1 0
ecom: 
name nil ref Listnode 1 0
ecom to: 
name .b288 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 .b288 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 .b288 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 .t289 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 .t289 string 0 0
ecom: 
+ string 10 1
  const [ string 1 0
  name l string 0 0
ecom to: 
name .t289 string 0 0
ecom: 
= string 10 1
  name .t289 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t289 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 .t289 string 0 0
ecom: 
= string 10 1
  name .t289 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t289 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 .t289 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 .t289 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 .t290 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 .t290 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 .b291 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t290 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t290 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 .t290 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 .b291 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t290 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t290 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 .t290 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 .t290 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 .t290 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 .b291 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t290 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t290 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 .t290 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 .b291 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t290 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t290 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 .t290 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 .b291 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t290 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t290 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 .t290 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 .b291 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t290 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t290 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 .t290 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 .b291 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t290 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t290 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 .b291 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
generate desc for ref Redir
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .b292 ref Redir 0 0
ecom: 
= ref Redir 10 1
  name .b292 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .b292 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
generate desc for ref Redir
ecom: 
* ref Redir 8 0
  + int 15 1
    name n ref Node 0 0
    const redir (32) int 6 0
ecom to: 
name .b292 ref Redir 0 0
ecom: 
= ref Redir 10 1
  name .b292 ref Redir 0 0
  name nil ref Redir 1 0
ecom: 
name nil ref Redir 1 0
ecom to: 
name .b292 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 .t290 string 0 0
generate desc for big
ecom: 
const (0) int 6 0
ecom to: 
* int 8 0
  + int 15 0
    name .b291 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 .b291 big 0 0
    const (72) int 6 0
ecom: 
= string 10 1
  name .t290 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t290 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 .t290 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 .b291 big 0 0
    const (64) int 6 0
ecom: 
= string 10 1
  name .t290 string 0 0
  name nil string 1 0
ecom: 
name nil string 1 0
ecom to: 
name .t290 string