(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgname)
          op: assign_op.Equal
          rhs: {<ucspi-tcp>}
          spids: [7]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgver)
          op: assign_op.Equal
          rhs: {<0.88>}
          spids: [10]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgrel)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [13]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgdesc)
          op: assign_op.Equal
          rhs: {(DQ <'Easy-to-use command-line tools for building TCP client-server applications.'>)}
          spids: [16]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:url)
          op: assign_op.Equal
          rhs: {(DQ <'http://cr.yp.to/ucspi-tcp.html'>)}
          spids: [21]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arch)
          op: assign_op.Equal
          rhs: {(DQ <all>)}
          spids: [26]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:license)
          op: assign_op.Equal
          rhs: {(DQ <public-domain>)}
          spids: [31]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:depends)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [36]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:makedepends)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [40]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:source)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'http://cr.yp.to/'> ($ Id.VSub_DollarName '$pkgname') <'/'> 
                ($ Id.VSub_DollarName '$pkgname') <-> ($ Id.VSub_DollarName '$pkgver') <'.tar.gz\n'> <'\tucspi-tcp-0.88.a_record.patch\n'> 
                <'\tucspi-tcp-0.88.errno.patch\n'> <'\t'>
              )
            }
          spids: [44]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:builddir)
          op: assign_op.Equal
          rhs: 
            {(DQ ($ Id.VSub_DollarName '$srcdir')) <'/'> ($ Id.VSub_DollarName '$pkgname') <-> 
              ($ Id.VSub_DollarName '$pkgver')
            }
          spids: [59]
        )
      ]
    )
    (command.ShFunction
      name: build
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ 
                    (braced_var_sub
                      token: <Id.VSub_Name CC>
                      suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ <gcc>)})
                    ) <' '> (${ Id.VSub_Name CFLAGS)
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<conf-cc>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ 
                    (braced_var_sub
                      token: <Id.VSub_Name CC>
                      suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ <gcc>)})
                    ) <' '> (${ Id.VSub_Name LDFLAGS)
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<conf-ld>})]
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {(DQ <'/usr'>)}]
              redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<conf-home>})]
              do_fork: T
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<make>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: package
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<f>})
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/bin'>})
            (command.ForEach
              iter_name: f
              iter_words: [
                {<tcpserver>}
                {<tcprules>}
                {<tcprulescheck>}
                {<argv0>}
                {<recordio>}
                {<tcpclient>}
                {<Id.Lit_Star '*'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\@'>)}
                {<tcpcat>}
                {<mconnect>}
                {<mconnect-io>}
                {<addcr>}
                {<delcr>}
                {<fixcrio>}
                {<rblsmtpd>}
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<cp>} {($ Id.VSub_DollarName '$f')} 
                      {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/bin/'> ($ Id.VSub_DollarName '$f')}
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:md5sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'39b619147db54687c4a583a7a94c9163  ucspi-tcp-0.88.tar.gz\n'> 
                <'554ec0eb60f619667efde3fb5325310d  ucspi-tcp-0.88.a_record.patch\n'> <'759a11fafff188d9580be6498a028095  ucspi-tcp-0.88.errno.patch'>
              )
            }
          spids: [233]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sha256sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'4a0615cab74886f5b4f7e8fd32933a07b955536a3476d74ea087a3ea66a23e9c  ucspi-tcp-0.88.tar.gz\n'
                > <'5101354eb86d8e11edefd7b83df4e9c274a55b845f4cb2ce36dda912aced56f4  ucspi-tcp-0.88.a_record.patch\n'> 
                <
'3a4c0d8770c5716f749450a12b678b2282a06e43360478ce9c1d25bd3890e816  ucspi-tcp-0.88.errno.patch'
                >
              )
            }
          spids: [240]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sha512sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'44efbd477dacf31d39fc970e2d2f74526dc815b905742f6127f0d5c80928ecc7e743089eaab0492386a58d5b97905113fbe8bbc7214ae179b7be27966b7566c7  ucspi-tcp-0.88.tar.gz\n'
                > 
                <
'643514c57570fc0b4e817b07e6d26e831cec5b4657c3d1b9948bd90267fe370a340b911897d575eb94192e24ba71a03ac68ceb2774ef7c0e7ff819c5b4285bc3  ucspi-tcp-0.88.a_record.patch\n'
                > 
                <
'86b58807e5d2dcd4ab15a4c0f62baaa0988aa4c6b49b522fa1721da5dcab32b1ceb9bde6c07b2a7340471ed5932af5a9c160e345805626b16fd9b1bad55be0eb  ucspi-tcp-0.88.errno.patch'
                >
              )
            }
          spids: [247]
        )
      ]
    )
  ]
)