(command.CommandList
  children: [
    (C {(set)} {(-u) ($ VSub_DollarName '$DX')})
    (command.Case
      to_match: {($ VSub_Pound '$#')}
      arms: [
        (case_arm
          pat_list: [{(2)}]
          action: [
            (command.Sentence
              child: 
                (command.Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (lhs_expr.LhsName name:OLDTAB spids:[115])
                      op: Equal
                      rhs: {($ VSub_Number '$1')}
                      spids: [115]
                    )
                  ]
                  spids: [115]
                )
              terminator: <Op_Semi ';'>
            )
            (command.Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:NEWTAB spids:[120])
                  op: Equal
                  rhs: {($ VSub_Number '$2')}
                  spids: [120]
                )
              ]
              spids: [120]
            )
          ]
          spids: [111 113 123 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (C {(echo)} 
              {
                (DQ ('Usage: ') 
                  (word_part.CommandSubPart
                    command_list: 
                      (command.CommandList
                        children: [(C {(basename)} {($ VSub_Number '$0')})]
                      )
                    left_token: <Left_Backtick '`'>
                    spids: [134 138]
                  ) (' <Input> <Output>')
                )
              }
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [126 128 16777215 147]
        )
      ]
      spids: [105 109 147]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-r)} {($ VSub_DollarName '$OLDTAB')} {(Lit_Other ']')})
          ]
          action: [
            (C {(echo)} 
              {
                (DQ 
                  (word_part.CommandSubPart
                    command_list: 
                      (command.CommandList
                        children: [(C {(basename)} {($ VSub_Number '$0')})]
                      )
                    left_token: <Left_Backtick '`'>
                    spids: [168 172]
                  ) (': ') ($ VSub_DollarName '$OLDTAB') (' does not exist or is unreadable.')
                )
              }
            )
            (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 162]
        )
      ]
      spids: [16777215 183]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.SimpleCommand
              words: [{(touch)} {($ VSub_DollarName '$NEWTAB')}]
              redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})]
            )
          ]
          action: [(C {(Lit_Other ':')})]
          spids: [16777215 196]
        )
      ]
      else_action: [
        (C {(echo)} 
          {
            (DQ 
              (word_part.CommandSubPart
                command_list: 
                  (command.CommandList
                    children: [(C {(basename)} {($ VSub_Number '$0')})]
                  )
                left_token: <Left_Backtick '`'>
                spids: [207 211]
              ) (': cannot write to ') ($ VSub_DollarName '$NEWTAB') (.)
            )
          }
        )
        (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
      ]
      spids: [201 222]
    )
    (command.SimpleCommand
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: <Redir_DLess '<<'>
          fd: 16777215
          here_begin: {(END_OF_HEADER)}
          here_end_span_id: 282
          stdin_parts: [
            ('# /etc/bootptab: database for bootp server (/etc/bootpd)\n')
            ('# This file was generated automagically\n')
            ('\n')
            ("# Blank lines and lines beginning with '#' are ignored.\n")
            ('#\n')
            ('# Legend:\t(see bootptab.5)\n')
            ('#\tfirst field -- hostname (not indented)\n')
            ('#\tbf -- bootfile\n')
            ('#\tbs -- bootfile size in 512-octet blocks\n')
            ('#\tcs -- cookie servers\n')
            ('#\tdf -- dump file name\n')
            ('#\tdn -- domain name\n')
            ('#\tds -- domain name servers\n')
            ('#\tef -- extension file\n')
            ('#\tgw -- gateways\n')
            ('#\tha -- hardware address\n')
            ('#\thd -- home directory for bootfiles\n')
            ('#\thn -- host name set for client\n')
            ('#\tht -- hardware type\n')
            ('#\tim -- impress servers\n')
            ('#\tip -- host IP address\n')
            ('#\tlg -- log servers\n')
            ('#\tlp -- LPR servers\n')
            ('#\tns -- IEN-116 name servers\n')
            ('#\tra -- reply address\n')
            ('#\trl -- resource location protocol servers\n')
            ('#\trp -- root path\n')
            ('#\tsa -- boot server address\n')
            ('#\tsm -- subnet mask\n')
            ('#\tsw -- swap server\n')
            ('#\ttc -- template host (points to similar host entry)\n')
            ('#\ttd -- TFTP directory\n')
            ('#\tto -- time offset (seconds)\n')
            ('#\tts -- time servers\n')
            ('#\tvm -- vendor magic number\n')
            ('#\tTn -- generic option tag n\n')
            ('#\n')
            ("# Be careful about including backslashes where they're needed.  Weird (bad)\n")
            ('# things can happen when a backslash is omitted where one is intended.\n')
            ('# Also, note that generic option data must be either a string or a\n')
            ('# sequence of bytes where each byte is a two-digit hex value.\n')
            ('\n')
            ('# First, we define a global entry which specifies the stuff every host uses.\n')
            ('# (Host name lookups are relative to the domain: your.domain.name)\n')
            ('\n')
          ]
        )
        (redir.Redir
          op: <Redir_DGreat '>>'>
          fd: 16777215
          arg_word: {($ VSub_DollarName '$NEWTAB')}
        )
      ]
    )
    (command.Pipeline
      children: [
        (command.SimpleCommand
          words: [{(sed)} {(-e)} {(SQ <'s/[:-]//g'>)}]
          redirects: [
            (redir.Redir
              op: <Redir_Less '<'>
              fd: 16777215
              arg_word: {($ VSub_DollarName '$OLDTAB')}
            )
          ]
        )
        (command.SimpleCommand
          words: [
            {(nawk)}
            {
              (SQ <'BEGIN\t{ PART = 0 ; FIELD=0 ; BOOTPATH="unset" ; BOOTFILE="unset" }\n'> 
                <'\t/^%%/\t{\n'> <'\t\t\t\tPART = 1\n'> 
                <
'\t\t\t\tprintf ".default:\\\\\\n\\t:ht=ether:\\\\\\n\\t:hn:\\\\\\n\\t:dn=your.domain.name:\\\\\\n\\t:ds=your,dns,servers:\\\\\\n\\t:sm=255.255.0.0:\\\\\\n\\t:hd=%s:\\\\\\n\\t:rp=%s:\\\\\\n\\t:td=%s:\\\\\\n\\t:bf=%s:\\\\\\n\\t:to=auto:\\n\\n", BOOTPATH, BOOTPATH, BOOTPATH, BOOTFILE\n'
                > <'\t\t\t\tnext\n'> <'\t\t\t}\n'> <'\t/^$/\t{ next }\n'> <'\t/^#/\t{ next }\n'> <'\t\t{\n'> 
                <'\t\t\tif ( PART == 0 && FIELD < 2 )\n'> <'\t\t  \t{\n'> <'\t\t\t\tif ( FIELD == 0 ) BOOTPATH=$1\n'> <'\t\t\t\tif ( FIELD == 1 ) BOOTFILE=$1\n'> 
                <'\t\t\t\tFIELD++\n'> <'\t\t\t}\n'> <'\t\t}\n'> <'\t\t{\n'> <'\t\t\tif ( PART == 1 )\n'> <'\t\t\t{\n'> <'\t\t\t\tHOST=$1\n'> 
                <'\t\t\t\tHA=$3\n'> <'\t\t\t\tIP=$4\n'> <'\t\t\t\tBF=$5\n'> 
                <
'\t\t\t\tprintf "%s:\\\\\\n\\t:tc=.default:\\\\\\n\\t:ha=0x%s:\\\\\\n\\t:ip=%s:\\\\\\n\\t:bf=%s:\\n", HOST, HA, IP, BF\n'
                > <'\t\t\t}\n'> <'\t\t}'>
              )
            }
          ]
          redirects: [
            (redir.Redir
              op: <Redir_DGreat '>>'>
              fd: 16777215
              arg_word: {($ VSub_DollarName '$NEWTAB')}
            )
          ]
        )
      ]
      negated: F
    )
    (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)