(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PATH)
          op: Equal
          rhs: {(/bin) (Lit_Other ':') (/usr/bin) (Lit_Other ':') (/usr/sbin)}
          spids: [35]
        )
      ]
      spids: [35]
    )
    (FuncDef
      name: display_usage
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:VERSION_NUMBER)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(grep)} {(DQ ('[') (Lit_Other '$') (']FreeBSD:'))} 
                                    {($ VSub_Number '$0')}
                                  )
                                  (C {(cut)} {(-d)} {(SQ <' '>)} {(-f)} {(4)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [52 76]
                      )
                    }
                  spids: [51]
                )
              ]
              spids: [51]
            )
            (C {(echo)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Number 0>
                    suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*') (Lit_Slash /)})
                    spids: [82 87]
                  ) (' version ') (${ VSub_Name VERSION_NUMBER)
                )
              }
            )
            (C {(echo)} 
              {
                (DQ ('Usage: ') 
                  (BracedVarSub
                    token: <VSub_Number 0>
                    suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*') (Lit_Slash /)})
                    spids: [99 104]
                  ) (' [-m /path] [-t /path] [-A arch] [-F <make args>] [-D /path]')
                )
              }
            )
            (C {(echo)} {(DQ ('Options:'))})
            (C {(echo)} {(DQ ('  -m /path/directory  Specify location of source to do the make in'))})
            (C {(echo)} {(DQ ('  -t /path/directory  Specify temp root directory'))})
            (C {(echo)} {(DQ ('  -A architecture  Alternative architecture name to pass to make'))})
            (C {(echo)} 
              {(DQ ('  -F <arguments for make> Specify what to put on the make command line'))}
            )
            (C {(echo)} 
              {(SQ <'  -D /path/directory  Specify the destination directory to install files to'>)}
            )
            (C {(echo)} {(SQ )})
          ]
          spids: [48]
        )
      spids: [43 47]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TEMPROOT)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (SimpleCommand
                        words: [{(mktemp)} {(-d)} {(-t)} {(temproot)}]
                        more_env: [(env_pair name:TMPDIR val:{(/var/tmp)} spids:[167])]
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [166 177]
              )
            }
          spids: [165]
        )
      ]
      spids: [165]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MTREEDB)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name MTREEDB>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {(Lit_Slash /) (var) (Lit_Slash /) (db)}
                  )
                spids: [187 194]
              )
            }
          spids: [186]
        )
      ]
      spids: [186]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MTREEFILE)
          op: Equal
          rhs: {(DQ (${ VSub_Name MTREEDB) (/mergemaster.mtree))}
          spids: [196]
        )
      ]
      spids: [196]
    )
    (While
      cond: [
        (Sentence
          child: (C {(getopts)} {(DQ ('m:t:A:F:D:h'))} {(COMMAND_LINE_ARGUMENT)})
          terminator: <Op_Semi ';'>
        )
      ]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(DQ (${ VSub_Name COMMAND_LINE_ARGUMENT))}
              arms: [
                (case_arm
                  pat_list: [{(m)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:SOURCEDIR)
                          op: Equal
                          rhs: {(${ VSub_Name OPTARG)}
                          spids: [241]
                        )
                      ]
                      spids: [241]
                    )
                  ]
                  spids: [237 238 247 16777215]
                )
                (case_arm
                  pat_list: [{(t)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:TEMPROOT)
                          op: Equal
                          rhs: {(${ VSub_Name OPTARG)}
                          spids: [254]
                        )
                      ]
                      spids: [254]
                    )
                  ]
                  spids: [250 251 260 16777215]
                )
                (case_arm
                  pat_list: [{(A)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:ARCHSTRING)
                          op: Equal
                          rhs: {(SQ <'TARGET_ARCH='>) (${ VSub_Name OPTARG)}
                          spids: [267]
                        )
                      ]
                      spids: [267]
                    )
                  ]
                  spids: [263 264 276 16777215]
                )
                (case_arm
                  pat_list: [{(F)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:MM_MAKE_ARGS)
                          op: Equal
                          rhs: {(DQ (${ VSub_Name OPTARG))}
                          spids: [283]
                        )
                      ]
                      spids: [283]
                    )
                  ]
                  spids: [279 280 291 16777215]
                )
                (case_arm
                  pat_list: [{(D)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:DESTDIR)
                          op: Equal
                          rhs: {(${ VSub_Name OPTARG)}
                          spids: [298]
                        )
                      ]
                      spids: [298]
                    )
                  ]
                  spids: [294 295 304 16777215]
                )
                (case_arm
                  pat_list: [{(h)}]
                  action: [
                    (C {(display_usage)})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
                  ]
                  spids: [307 308 319 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(echo)} {(SQ )})
                    (C {(display_usage)})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [322 323 340 16777215]
                )
              ]
              spids: [226 234 343]
            )
          ]
          spids: [223 345]
        )
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:SOURCEDIR)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name SOURCEDIR>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {(Lit_Slash /) (usr) (Lit_Slash /) (src)}
                  )
                spids: [355 362]
              )
            }
          spids: [354]
        )
      ]
      spids: [354]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(${ VSub_Name SOURCEDIR) (/Makefile.inc1)} 
                  {(-a)} {(-f)} {(${ VSub_Name SOURCEDIR) (/../Makefile.inc1)} {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ (' *** The source directory you specified (') (${ VSub_Name SOURCEDIR) (')'))}
            )
            (C {(echo)} {(DQ ('     will be reset to ') (${ VSub_Name SOURCEDIR) (/..))})
            (C {(echo)} {(SQ )})
            (C {(sleep)} {(3)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SOURCEDIR)
                  op: Equal
                  rhs: {(${ VSub_Name SOURCEDIR) (/..)}
                  spids: [427]
                )
              ]
              spids: [427]
            )
          ]
          spids: [16777215 391]
        )
      ]
      spids: [16777215 433]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:objp)
          op: Equal
          rhs: {(${ VSub_Name MAKEOBJDIRPREFIX)}
          spids: [439]
        )
      ]
      spids: [439]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name objp))} {(Lit_Other ']')})
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:objp) op:Equal rhs:{(/usr/obj)} spids:[458])]
          spids: [458]
        )
      ]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:legacydir)
          op: Equal
          rhs: {(${ VSub_Name objp) (${ VSub_Name SOURCEDIR) (/tmp/legacy)}
          spids: [461]
        )
      ]
      spids: [461]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:legacypath)
          op: Equal
          rhs: 
            {(${ VSub_Name legacydir) (/usr/sbin) (Lit_Other ':') (${ VSub_Name legacydir) (/usr/bin) 
              (Lit_Other ':') (${ VSub_Name legacydir) (/bin)
            }
          spids: [470]
        )
      ]
      spids: [470]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MM_MAKE_ARGS)
          op: Equal
          rhs: 
            {
              (DQ (${ VSub_Name MM_MAKE_ARGS) (' PATH=') (${ VSub_Name legacypath) (':') 
                (${ VSub_Name PATH)
              )
            }
          spids: [486]
        )
      ]
      spids: [486]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MM_MAKE)
          op: Equal
          rhs: 
            {
              (DQ ('make ') (${ VSub_Name ARCHSTRING) (' ') (${ VSub_Name MM_MAKE_ARGS) (' -m ') 
                (${ VSub_Name SOURCEDIR) (/share/mk)
              )
            }
          spids: [501]
        )
      ]
      spids: [501]
    )
    (FuncDef
      name: delete_temproot
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(rm)} {(-rf)} {(DQ (${ VSub_Name TEMPROOT))}]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[537])]
            )
            (SimpleCommand
              words: [{(chflags)} {(-R)} {(0)} {(DQ (${ VSub_Name TEMPROOT))}]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[553])]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(rm)} {(-rf)} {(DQ (${ VSub_Name TEMPROOT))})
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
            )
          ]
          spids: [524]
        )
      spids: [519 523]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(Lit_Other '[')} {(-d)} {(DQ (${ VSub_Name TEMPROOT))} {(Lit_Other ']')})
        (C {(delete_temproot)})
      ]
    )
    (C {(echo)} {(DQ ('*** Creating the temporary root environment in ') (${ VSub_Name TEMPROOT))})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(mkdir)} {(-p)} {(DQ (${ VSub_Name TEMPROOT))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(echo)} {(DQ (' *** ') (${ VSub_Name TEMPROOT) (' ready for use'))})]
          spids: [16777215 616]
        )
      ]
      spids: [16777215 629]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-d)} {(DQ (${ VSub_Name TEMPROOT))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(SQ )})
            (C {(echo)} {(DQ ('  *** FATAL ERROR: Cannot create ') (${ VSub_Name TEMPROOT))})
            (C {(echo)} {(SQ )})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 649]
        )
      ]
      spids: [16777215 678]
    )
    (C {(echo)} {(DQ (' *** Creating and populating directory structure in ') (${ VSub_Name TEMPROOT))})
    (C {(echo)} {(SQ )})
    (AndOr
      ops: [Op_DPipe]
      children: [
        (BraceGroup
          children: [
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(cd)} {(${ VSub_Name SOURCEDIR)})
                (BraceGroup
                  children: [
                    (Sentence
                      child: (C {(echo)} {(DQ ('*** Cannot cd to ') (${ VSub_Name SOURCEDIR))})
                      terminator: <Op_Semi ';'>
                    )
                    (Sentence
                      child: (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [706]
                )
              ]
            )
            (Case
              to_match: {(DQ (${ VSub_Name DESTDIR))}
              arms: [
                (case_arm pat_list:[{(SQ )}] spids:[16777215 739 741 16777215])
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(${ VSub_Name MM_MAKE)} {(Lit_VarLike 'DESTDIR=') (${ VSub_Name DESTDIR)} 
                      {(distrib-dirs)}
                    )
                  ]
                  spids: [744 745 760 16777215]
                )
              ]
              spids: [726 734 763]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:od)
                  op: Equal
                  rhs: {(${ VSub_Name TEMPROOT) (/usr/obj)}
                  spids: [766]
                )
              ]
              spids: [766]
            )
            (Sentence
              child: 
                (AndOr
                  ops: [Op_DAmp Op_DAmp Op_DAmp]
                  children: [
                    (C {(${ VSub_Name MM_MAKE)} {(Lit_VarLike 'DESTDIR=') (${ VSub_Name TEMPROOT)} 
                      {(distrib-dirs)}
                    )
                    (SimpleCommand
                      words: [{(${ VSub_Name MM_MAKE)} {(_obj)} {(Lit_VarLike 'SUBDIR_OVERRIDE=') (etc)}]
                      more_env: [
                        (env_pair
                          name: MAKEOBJDIRPREFIX
                          val: {($ VSub_Name '$od')}
                          spids: [787]
                        )
                      ]
                    )
                    (SimpleCommand
                      words: [
                        {(${ VSub_Name MM_MAKE)}
                        {(everything)}
                        {(Lit_VarLike 'SUBDIR_OVERRIDE=') (etc)}
                      ]
                      more_env: [
                        (env_pair
                          name: MAKEOBJDIRPREFIX
                          val: {($ VSub_Name '$od')}
                          spids: [802]
                        )
                      ]
                    )
                    (SimpleCommand
                      words: [
                        {(${ VSub_Name MM_MAKE)}
                        {(Lit_VarLike 'DESTDIR=') (${ VSub_Name TEMPROOT)}
                        {(distribution)}
                      ]
                      more_env: [
                        (env_pair
                          name: MAKEOBJDIRPREFIX
                          val: {($ VSub_Name '$od')}
                          spids: [817]
                        )
                      ]
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [696]
        )
        (BraceGroup
          children: [
            (Sentence child:(C {(echo)} {(SQ )}) terminator:<Op_Semi ';'>)
            (Sentence
              child: 
                (C {(echo)} 
                  {
                    (DQ ("  *** FATAL ERROR: Cannot 'cd' to ") (${ VSub_Name SOURCEDIR) 
                      (' and install files to')
                    )
                  }
                )
              terminator: <Op_Semi ';'>
            )
            (Sentence
              child: (C {(echo)} {(DQ ('      the temproot environment'))})
              terminator: <Op_Semi ';'>
            )
            (Sentence child:(C {(echo)} {(SQ )}) terminator:<Op_Semi ';'>)
            (Sentence
              child: (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [836]
        )
      ]
    )
    (C {(rm)} {(-f)} {(${ VSub_Name TEMPROOT) (/etc/) (Lit_Other '*') (.db)} 
      {(${ VSub_Name TEMPROOT) (/etc/passwd)}
    )
    (SimpleCommand
      words: [{(find)} {(${ VSub_Name TEMPROOT) (/usr/obj)} {(-type)} {(f)} {(-delete)}]
      redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[924])]
    )
    (SimpleCommand
      words: [{(find)} {(${ VSub_Name TEMPROOT) (/usr)} {(-type)} {(l)} {(-delete)}]
      redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[947])]
    )
    (SimpleCommand
      words: [{(find)} {(${ VSub_Name TEMPROOT)} {(-type)} {(f)} {(-size)} {(0)} {(-delete)}]
      redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[966])]
    )
    (SimpleCommand
      words: [{(find)} {(-d)} {(${ VSub_Name TEMPROOT)} {(-type)} {(d)} {(-empty)} {(-delete)}]
      redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[985])]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MTREENEW)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(mktemp)} {(-t)} {(mergemaster.mtree)})])
                left_token: <Left_Backtick '`'>
                spids: [993 999]
              )
            }
          spids: [992]
        )
      ]
      spids: [992]
    )
    (SimpleCommand
      words: [
        {(mtree)}
        {(-nci)}
        {(-p)}
        {(${ VSub_Name TEMPROOT)}
        {(-k)}
        {(size) (Lit_Comma ',') (md5digest)}
      ]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(${ VSub_Name MTREENEW)} spids:[1017])
        (Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1023])
      ]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {(-s)} {(DQ (${ VSub_Name MTREENEW))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ('*** Saving mtree database for future upgrades'))})
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(-e)} {(DQ (${ VSub_Name DESTDIR) (${ VSub_Name MTREEFILE))})
                (C {(unlink)} {(${ VSub_Name DESTDIR) (${ VSub_Name MTREEFILE)})
              ]
            )
            (C {(mv)} {(${ VSub_Name MTREENEW)} {(${ VSub_Name DESTDIR) (${ VSub_Name MTREEFILE)})
          ]
          spids: [16777215 1042]
        )
      ]
      spids: [16777215 1090]
    )
    (C {(delete_temproot)})
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)