(CommandList
  children: [
    (Sentence
      child: 
        (FuncDef
          name: display_help
          body: 
            (BraceGroup
              children: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(Lit_Other '[')} {(-e)} {(DQ (${ VSub_Name PROGDIR) (/doc/help-index))} 
                          {(Lit_Other ']')}
                        )
                      ]
                      action: [(C {(cat)} {(${ VSub_Name PROGDIR) (/doc/help-index)})]
                      spids: [16777215 112]
                    )
                  ]
                  else_action: [
                    (C {(echo)} {(DQ ('Error: ') (${ VSub_Name PROGDIR) ('/doc/help-index not found'))})
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [123 142]
                )
              ]
              spids: [93]
            )
          spids: [89 92]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: display_command_help
          body: 
            (BraceGroup
              children: [
                (If
                  arms: [
                    (if_arm
                      cond: [(C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')})]
                      action: [
                        (C {(echo)} {(DQ ('Error: No command specified to display help for'))})
                        (ControlFlow
                          token: <ControlFlow_Exit exit>
                          arg_word: {(1)}
                        )
                      ]
                      spids: [16777215 171]
                    )
                  ]
                  spids: [16777215 186]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(Lit_Other '[')} {(-e)} 
                          {(DQ (${ VSub_Name PROGDIR) (/doc/help-) (${ VSub_Number 1))} {(Lit_Other ']')}
                        )
                      ]
                      action: [(C {(cat)} {(${ VSub_Name PROGDIR) (/doc/help-) (${ VSub_Number 1)})]
                      spids: [16777215 210]
                    )
                  ]
                  else_action: [
                    (C {(echo)} 
                      {
                        (DQ ('Error: ') (${ VSub_Name PROGDIR) (/doc/help-) (${ VSub_Number 1) 
                          (' not found')
                        )
                      }
                    )
                    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
                  ]
                  spids: [224 247]
                )
              ]
              spids: [155]
            )
          spids: [151 154]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: convert_byte_to_megabyte
          body: 
            (BraceGroup
              children: [
                (If
                  arms: [
                    (if_arm
                      cond: [(C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Number 1))} {(Lit_Other ']')})]
                      action: [
                        (C {(echo)} {(DQ ('Error: No bytes specified!'))})
                        (ControlFlow
                          token: <ControlFlow_Exit exit>
                          arg_word: {(1)}
                        )
                      ]
                      spids: [16777215 278]
                    )
                  ]
                  spids: [16777215 293]
                )
                (C {(expr)} {(-e)} {(${ VSub_Number 1)} {(/)} {(1048576)})
              ]
              spids: [260]
            )
          spids: [256 259]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: convert_blocks_to_megabyte
          body: 
            (BraceGroup
              children: [
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Number 1))} {(Lit_Other ']')})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(echo)} {(DQ ('Error: No blocks specified!'))})
                        (ControlFlow
                          token: <ControlFlow_Exit exit>
                          arg_word: {(1)}
                        )
                      ]
                      spids: [16777215 339]
                    )
                  ]
                  spids: [16777215 354]
                )
                (C {(expr)} {(-e)} {(${ VSub_Number 1)} {(/)} {(2048)})
              ]
              spids: [320]
            )
          spids: [316 319]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: strip_white_space
          body: 
            (BraceGroup
              children: [
                (If
                  arms: [
                    (if_arm
                      cond: [(C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Number 1))} {(Lit_Other ']')})]
                      action: [
                        (C {(echo)} {(DQ ('Error: No value setup to strip whitespace from!'))})
                        (ControlFlow
                          token: <ControlFlow_Exit exit>
                          arg_word: {(1)}
                        )
                      ]
                      spids: [16777215 399]
                    )
                  ]
                  spids: [16777215 415]
                )
                (C {(export)} 
                  {(Lit_VarLike 'VAL=') 
                    (CommandSubPart
                      command_list: 
                        (CommandList
                          children: [
                            (Pipeline
                              children: [
                                (C {(echo)} {(DQ ($ VSub_Number '$1'))})
                                (C {(tr)} {(-d)} {(SQ <' '>)})
                              ]
                              negated: F
                            )
                          ]
                        )
                      left_token: <Left_Backtick '`'>
                      spids: [422 438]
                    )
                  }
                )
              ]
              spids: [381]
            )
          spids: [377 380]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: exit_err
          body: 
            (BraceGroup
              children: [
                (C {(echo)} {(DQ ('EXITERROR: ') ($ VSub_Number '$1'))})
                (SimpleCommand
                  words: [{(echo)} {(DQ ('EXITERROR: ') (${ VSub_Number 1))}]
                  redirects: [
                    (Redir
                      op_id: Redir_DGreat
                      fd: 16777215
                      arg_word: {($ VSub_Name '$LOGOUT')}
                      spids: [480]
                    )
                  ]
                )
                (C {(unmount_all_filesystems_failure)})
                (C {(echo)} {(DQ ('For more details see log file: ') ($ VSub_Name '$LOGOUT'))})
                (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              ]
              spids: [451]
            )
          spids: [447 450]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: rc_nohalt
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:CMD)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [520]
                    )
                  ]
                  spids: [520]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [(C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name CMD))} {(Lit_Other ']')})]
                      action: [(C {(exit_err)} {(DQ ('Error: missing argument in rc_nohalt()'))})]
                      spids: [16777215 542]
                    )
                  ]
                  spids: [16777215 552]
                )
                (SimpleCommand
                  words: [{(echo)} {(DQ ('Running: ') (${ VSub_Name CMD))}]
                  redirects: [
                    (Redir
                      op_id: Redir_DGreat
                      fd: 16777215
                      arg_word: {(${ VSub_Name LOGOUT)}
                      spids: [565]
                    )
                  ]
                )
                (SimpleCommand
                  words: [{(${ VSub_Name CMD)}]
                  redirects: [
                    (Redir
                      op_id: Redir_DGreat
                      fd: 16777215
                      arg_word: {(${ VSub_Name LOGOUT)}
                      spids: [575]
                    )
                    (Redir
                      op_id: Redir_DGreat
                      fd: 2
                      arg_word: {(${ VSub_Name LOGOUT)}
                      spids: [580]
                    )
                  ]
                )
              ]
              spids: [517]
            )
          spids: [513 516]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: rc_halt
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:CMD)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [600]
                    )
                  ]
                  spids: [600]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [(C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name CMD))} {(Lit_Other ']')})]
                      action: [(C {(exit_err)} {(DQ ('Error: missing argument in rc_halt()'))})]
                      spids: [16777215 622]
                    )
                  ]
                  spids: [16777215 632]
                )
                (SimpleCommand
                  words: [{(echo)} {(DQ ('Running: ') (${ VSub_Name CMD))}]
                  redirects: [
                    (Redir
                      op_id: Redir_DGreat
                      fd: 16777215
                      arg_word: {(${ VSub_Name LOGOUT)}
                      spids: [645]
                    )
                  ]
                )
                (SimpleCommand
                  words: [{(eval)} {(${ VSub_Name CMD)}]
                  redirects: [
                    (Redir
                      op_id: Redir_DGreat
                      fd: 16777215
                      arg_word: {(${ VSub_Name LOGOUT)}
                      spids: [657]
                    )
                    (Redir
                      op_id: Redir_DGreat
                      fd: 2
                      arg_word: {(${ VSub_Name LOGOUT)}
                      spids: [662]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:STATUS)
                      op: Equal
                      rhs: {(DQ ($ VSub_QMark '$?'))}
                      spids: [668]
                    )
                  ]
                  spids: [668]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name STATUS))} 
                          {(KW_Bang '!') (Lit_Other '=')} {(DQ (0))} {(Lit_Other ']')}
                        )
                      ]
                      action: [
                        (C {(exit_err)} 
                          {(DQ ('Error ') (${ VSub_Name STATUS) (': ') (${ VSub_Name CMD))}
                        )
                      ]
                      spids: [16777215 694]
                    )
                  ]
                  spids: [16777215 711]
                )
              ]
              spids: [597]
            )
          spids: [593 596]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: rc_halt_echo
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:CMD)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [727]
                    )
                  ]
                  spids: [727]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [(C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name CMD))} {(Lit_Other ']')})]
                      action: [(C {(exit_err)} {(DQ ('Error: missing argument in rc_halt_echo()'))})]
                      spids: [16777215 749]
                    )
                  ]
                  spids: [16777215 759]
                )
                (SimpleCommand
                  words: [{(echo)} {(DQ ('Running: ') (${ VSub_Name CMD))}]
                  redirects: [
                    (Redir
                      op_id: Redir_DGreat
                      fd: 16777215
                      arg_word: {(${ VSub_Name LOGOUT)}
                      spids: [772]
                    )
                  ]
                )
                (Pipeline
                  children: [
                    (SimpleCommand
                      words: [{(${ VSub_Name CMD)}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[782])]
                    )
                    (C {(tee)} {(-a)} {(${ VSub_Name LOGOUT)})
                  ]
                  negated: F
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:STATUS)
                      op: Equal
                      rhs: {(DQ ($ VSub_QMark '$?'))}
                      spids: [797]
                    )
                  ]
                  spids: [797]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$STATUS'))} 
                          {(KW_Bang '!') (Lit_Other '=')} {(DQ (0))} {(Lit_Other ']')}
                        )
                      ]
                      action: [
                        (C {(exit_err)} 
                          {(DQ ('Error ') (${ VSub_Name STATUS) (': ') ($ VSub_Name '$CMD'))}
                        )
                      ]
                      spids: [16777215 821]
                    )
                  ]
                  spids: [16777215 836]
                )
              ]
              spids: [724]
            )
          spids: [720 723]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: rc_nohalt_echo
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:CMD)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [853]
                    )
                  ]
                  spids: [853]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [(C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name CMD))} {(Lit_Other ']')})]
                      action: [(C {(exit_err)} {(DQ ('Error: missing argument in rc_nohalt_echo()'))})]
                      spids: [16777215 875]
                    )
                  ]
                  spids: [16777215 885]
                )
                (SimpleCommand
                  words: [{(echo)} {(DQ ('Running: ') (${ VSub_Name CMD))}]
                  redirects: [
                    (Redir
                      op_id: Redir_DGreat
                      fd: 16777215
                      arg_word: {(${ VSub_Name LOGOUT)}
                      spids: [898]
                    )
                  ]
                )
                (Pipeline
                  children: [
                    (SimpleCommand
                      words: [{(${ VSub_Name CMD)}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[908])]
                    )
                    (C {(tee)} {(-a)} {(${ VSub_Name LOGOUT)})
                  ]
                  negated: F
                )
              ]
              spids: [850]
            )
          spids: [846 849]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: echo_log
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:STR)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [937]
                    )
                  ]
                  spids: [937]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [(C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name STR))} {(Lit_Other ']')})]
                      action: [(C {(exit_err)} {(DQ ('Error: missing argument in echo_log()'))})]
                      spids: [16777215 959]
                    )
                  ]
                  spids: [16777215 969]
                )
                (Pipeline
                  children: [
                    (C {(echo)} {(DQ (${ VSub_Name STR))})
                    (C {(tee)} {(-a)} {(${ VSub_Name LOGOUT)})
                  ]
                  negated: F
                )
              ]
              spids: [934]
            )
          spids: [930 933]
        )
      terminator: <Op_Semi ';'>
    )
    (FuncDef
      name: is_num
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(expr)} {($ VSub_Number '$1')} {(Lit_Other '+')} {(1)}]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[1014])]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{($ VSub_QMark '$?')})
          ]
          spids: [1003]
        )
      spids: [999 1002]
    )
    (Sentence
      child: 
        (FuncDef
          name: fetch_file
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:FETCHFILE)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [1036]
                    )
                  ]
                  spids: [1036]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:FETCHOUTFILE)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$2'))}
                      spids: [1042]
                    )
                  ]
                  spids: [1042]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:EXITFAILED)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$3'))}
                      spids: [1048]
                    )
                  ]
                  spids: [1048]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:EXITFILE)
                      op: Equal
                      rhs: {(DQ (${ VSub_Name TMPDIR) (/.fetchExit))}
                      spids: [1055]
                    )
                  ]
                  spids: [1055]
                )
                (SimpleCommand
                  words: [{(rm)} {(${ VSub_Name FETCHOUTFILE)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 2
                      arg_word: {(/dev/null)}
                      spids: [1071]
                    )
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(/dev/null)}
                      spids: [1074]
                    )
                  ]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:SIZE)
                      op: Equal
                      rhs: 
                        {
                          (ArithSubPart
                            anode: 
                              (ArithBinary
                                op_id: Arith_Slash
                                left: 
                                  (ArithWord
                                    w: 
                                      {
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(fetch)} {(-s)} {(DQ (${ VSub_Name FETCHFILE))})
                                              ]
                                            )
                                          left_token: <Left_Backtick '`'>
                                          spids: [1082 1092]
                                        )
                                      }
                                  )
                                right: (ArithWord w:{(Lit_Digits 1024)})
                              )
                            spids: [1080 1099]
                          )
                        }
                      spids: [1079]
                    )
                  ]
                  spids: [1079]
                )
                (C {(echo)} {(DQ ('FETCH: ') (${ VSub_Name FETCHFILE))})
                (SimpleCommand
                  words: [{(echo)} {(DQ ('FETCH: ') (${ VSub_Name FETCHOUTFILE))}]
                  redirects: [
                    (Redir
                      op_id: Redir_DGreat
                      fd: 16777215
                      arg_word: {(${ VSub_Name LOGOUT)}
                      spids: [1121]
                    )
                  ]
                )
                (Sentence
                  child: 
                    (Subshell
                      child: 
                        (CommandList
                          children: [
                            (Sentence
                              child: 
                                (SimpleCommand
                                  words: [
                                    {(fetch)}
                                    {(-o)}
                                    {(${ VSub_Name FETCHOUTFILE)}
                                    {(DQ (${ VSub_Name FETCHFILE))}
                                  ]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: 16777215
                                      arg_word: {(/dev/null)}
                                      spids: [1144]
                                    )
                                    (Redir
                                      op_id: Redir_Great
                                      fd: 2
                                      arg_word: {(/dev/null)}
                                      spids: [1147]
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                            (SimpleCommand
                              words: [{(echo)} {(DQ ($ VSub_QMark '$?'))}]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 16777215
                                  arg_word: {(${ VSub_Name EXITFILE)}
                                  spids: [1158]
                                )
                              ]
                            )
                          ]
                        )
                      spids: [1128 1164]
                    )
                  terminator: <Op_Amp '&'>
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:PID)
                      op: Equal
                      rhs: {(DQ ($ VSub_Bang '$!'))}
                      spids: [1169]
                    )
                  ]
                  spids: [1169]
                )
                (While
                  cond: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:z) op:Equal rhs:{(1)} spids:[1178])]
                      spids: [1178]
                    )
                  ]
                  body: 
                    (DoGroup
                      children: [
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (C {(Lit_Other '[')} {(-e)} {(DQ (${ VSub_Name FETCHOUTFILE))} 
                                  {(Lit_Other ']')}
                                )
                              ]
                              action: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:DSIZE)
                                      op: Equal
                                      rhs: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [
                                                  (Pipeline
                                                    children: [
                                                      (C {(du)} {(-k)} {(${ VSub_Name FETCHOUTFILE)})
                                                      (C {(tr)} {(-d)} {(SQ <'\\t'>)})
                                                      (C {(cut)} {(-d)} {(SQ </>)} {(-f)} {(1)})
                                                    ]
                                                    negated: F
                                                  )
                                                ]
                                              )
                                            left_token: <Left_Backtick '`'>
                                            spids: [1205 1237]
                                          )
                                        }
                                      spids: [1204]
                                    )
                                  ]
                                  spids: [1204]
                                )
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (Sentence
                                          child: 
                                            (C {(Lit_Other '[')} 
                                              {
                                                (CommandSubPart
                                                  command_list: 
                                                    (CommandList
                                                      children: [
                                                        (C {(is_num)} {(DQ ($ VSub_Name '$DSIZE'))})
                                                      ]
                                                    )
                                                  left_token: <Left_CommandSub '$('>
                                                  spids: [1244 1250]
                                                )
                                              } {(Lit_Other ']')}
                                            )
                                          terminator: <Op_Semi ';'>
                                        )
                                      ]
                                      action: [
                                        (If
                                          arms: [
                                            (if_arm
                                              cond: [
                                                (Sentence
                                                  child: 
                                                    (C {(Lit_Other '[')} {($ VSub_Name '$SIZE')} {(-lt)} 
                                                      {($ VSub_Name '$DSIZE')} {(Lit_Other ']')}
                                                    )
                                                  terminator: <Op_Semi ';'>
                                                )
                                              ]
                                              action: [
                                                (Sentence
                                                  child: 
                                                    (Assignment
                                                      keyword: Assign_None
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (LhsName name:DSIZE)
                                                          op: Equal
                                                          rhs: {(DQ ($ VSub_Name '$SIZE'))}
                                                          spids: [1275]
                                                        )
                                                      ]
                                                      spids: [1275]
                                                    )
                                                  terminator: <Op_Semi ';'>
                                                )
                                              ]
                                              spids: [16777215 1273]
                                            )
                                          ]
                                          spids: [16777215 1281]
                                        )
                                        (C {(echo)} 
                                          {
                                            (DQ ('SIZE: ') (${ VSub_Name SIZE) (' DOWNLOADED: ') 
                                              (${ VSub_Name DSIZE)
                                            )
                                          }
                                        )
                                        (SimpleCommand
                                          words: [
                                            {(echo)}
                                            {
                                              (DQ ('SIZE: ') (${ VSub_Name SIZE) (' DOWNLOADED: ') 
                                                (${ VSub_Name DSIZE)
                                              )
                                            }
                                          ]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_DGreat
                                              fd: 16777215
                                              arg_word: {(${ VSub_Name LOGOUT)}
                                              spids: [1312]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [16777215 1256]
                                    )
                                  ]
                                  spids: [16777215 1318]
                                )
                              ]
                              spids: [16777215 1201]
                            )
                          ]
                          spids: [16777215 1321]
                        )
                        (SimpleCommand
                          words: [{(ps)} {(-p)} {(${ VSub_Name PID)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 16777215
                              arg_word: {(/dev/null)}
                              spids: [1337]
                            )
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [1340]
                            )
                          ]
                        )
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
                              ]
                              action: [
                                (Sentence
                                  child: (ControlFlow token:<ControlFlow_Break break>)
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              spids: [16777215 1357]
                            )
                          ]
                          spids: [16777215 1364]
                        )
                        (C {(sleep)} {(2)})
                      ]
                      spids: [1182 1373]
                    )
                )
                (C {(echo)} {(DQ (FETCHDONE))})
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:EXIT)
                      op: Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSubPart
                              command_list: 
                                (CommandList
                                  children: [(C {(cat)} {(${ VSub_Name EXITFILE)})]
                                )
                              left_token: <Left_Backtick '`'>
                              spids: [1387 1393]
                            )
                          )
                        }
                      spids: [1385]
                    )
                  ]
                  spids: [1385]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(Lit_Other '[')} {(DQ (${ VSub_Name EXIT))} {(KW_Bang '!') (Lit_Other '=')} 
                          {(DQ (0))} {(-a)} {(DQ ($ VSub_Name '$EXITFAILED'))} {(Lit_Other '=')} {(DQ (1))} {(Lit_Other ']')}
                        )
                      ]
                      action: [
                        (C {(exit_err)} {(DQ ('Error: Failed to download ') (${ VSub_Name FETCHFILE))})
                      ]
                      spids: [16777215 1429]
                    )
                  ]
                  spids: [16777215 1442]
                )
                (ControlFlow
                  token: <ControlFlow_Return return>
                  arg_word: {($ VSub_Name '$EXIT')}
                )
              ]
              spids: [1032]
            )
          spids: [1028 1031]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: get_zpool_name
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:DEVICE)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [1465]
                    )
                  ]
                  spids: [1465]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:BASENAME)
                      op: Equal
                      rhs: {(DQ (tank))}
                      spids: [1476]
                    )
                  ]
                  spids: [1476]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-d)} 
                              {(DQ (${ VSub_Name TMPDIR) (/.zpools))} {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [(C {(mkdir)} {(-p)} {(${ VSub_Name TMPDIR) (/.zpools)})]
                      spids: [16777215 1502]
                    )
                  ]
                  spids: [16777215 1515]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (C {(Lit_Other '[')} {(-e)} 
                              {(DQ (${ VSub_Name TMPDIR) (/.zpools/) (${ VSub_Name DEVICE))} {(Lit_Other ']')}
                            )
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      action: [
                        (C {(cat)} {(${ VSub_Name TMPDIR) (/.zpools/) (${ VSub_Name DEVICE)})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(0)}
                        )
                      ]
                      spids: [16777215 1539]
                    )
                  ]
                  else_action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:NUM)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(ls)} {(${ VSub_Name TMPDIR) (/.zpools/)})
                                          (C {(wc)} {(-l)})
                                          (C {(sed)} {(SQ <'s| ||g'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1566 1587]
                              )
                            }
                          spids: [1565]
                        )
                      ]
                      spids: [1565]
                    )
                    (While
                      cond: [(C {(Lit_Other ':')})]
                      body: 
                        (DoGroup
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:NEWNAME)
                                  op: Equal
                                  rhs: {(DQ (${ VSub_Name BASENAME) (${ VSub_Name NUM))}
                                  spids: [1603]
                                )
                              ]
                              spids: [1603]
                            )
                            (Pipeline
                              children: [
                                (C {(zpool)} {(list)})
                                (C {(grep)} {(-qw)} {(DQ (${ VSub_Name NEWNAME))})
                              ]
                              negated: F
                            )
                            (Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:chk1)
                                  op: Equal
                                  rhs: {($ VSub_QMark '$?')}
                                  spids: [1633]
                                )
                              ]
                              spids: [1631]
                            )
                            (Pipeline
                              children: [
                                (C {(zpool)} {(import)})
                                (C {(grep)} {(-qw)} {(DQ (${ VSub_Name NEWNAME))})
                              ]
                              negated: F
                            )
                            (Assignment
                              keyword: Assign_Local
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:chk2)
                                  op: Equal
                                  rhs: {($ VSub_QMark '$?')}
                                  spids: [1656]
                                )
                              ]
                              spids: [1654]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(Lit_Other '[')} {($ VSub_Name '$chk1')} {(-eq)} {(1)} {(-a)} 
                                          {($ VSub_Name '$chk2')} {(-eq)} {(1)} {(Lit_Other ']')}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Sentence
                                      child: (ControlFlow token:<ControlFlow_Break break>)
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [16777215 1682]
                                )
                              ]
                              spids: [16777215 1688]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:NUM)
                                  op: Equal
                                  rhs: 
                                    {
                                      (ArithSubPart
                                        anode: 
                                          (ArithBinary
                                            op_id: Arith_Plus
                                            left: (ArithVarRef name:NUM)
                                            right: (ArithWord w:{(Lit_Digits 1)})
                                          )
                                        spids: [1693 1698]
                                      )
                                    }
                                  spids: [1692]
                                )
                              ]
                              spids: [1692]
                            )
                          ]
                          spids: [1600 1701]
                        )
                    )
                    (C {(mkdir)} {(-p)} 
                      {(${ VSub_Name TMPDIR) (/.zpools/) 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(dirname)} {($ VSub_Name '$DEVICE')})]
                            )
                          left_token: <Left_Backtick '`'>
                          spids: [1717 1721]
                        )
                      }
                    )
                    (SimpleCommand
                      words: [{(echo)} {(DQ ($ VSub_Name '$NEWNAME'))}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: 16777215
                          arg_word: {(${ VSub_Name TMPDIR) (/.zpools/) (${ VSub_Name DEVICE)}
                          spids: [1730]
                        )
                      ]
                    )
                    (C {(echo)} {(DQ (${ VSub_Name NEWNAME))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
                  ]
                  spids: [1558 1755]
                )
              ]
              spids: [1462]
            )
          spids: [1458 1461]
        )
      terminator: <Op_Semi ';'>
    )
    (FuncDef
      name: iscompressed
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:FILE) op:Equal spids:[1770])]
              spids: [1768]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:RES) op:Equal spids:[1775])]
              spids: [1773]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:FILE)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [1779]
                )
              ]
              spids: [1779]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:RES) op:Equal rhs:{(1)} spids:[1785])]
              spids: [1785]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Pipeline
                      children: [
                        (C {(echo)} {(DQ (${ VSub_Name FILE))})
                        (SimpleCommand
                          words: [{(grep)} {(-qiE)} {(SQ <'\\.(Z|lzo|lzw|lzma|gz|bz2|xz|zip)$'>)}]
                          redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1812])]
                        )
                      ]
                      negated: F
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:RES) op:Equal rhs:{(0)} spids:[1819])]
                      spids: [1819]
                    )
                  ]
                  spids: [16777215 1816]
                )
              ]
              spids: [16777215 1823]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(${ VSub_Name RES)})
          ]
          spids: [1765]
        )
      spids: [1761 1764]
    )
    (FuncDef
      name: get_compression_type
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:FILE) op:Equal spids:[1845])]
              spids: [1843]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:SUFFIX) op:Equal spids:[1850])]
              spids: [1848]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:FILE)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number '$1'))}
                  spids: [1854]
                )
              ]
              spids: [1854]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUFFIX)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ (${ VSub_Name FILE))})
                                  (C {(sed)} {(-E)} {(SQ <'s|^(.+)\\.(.+)$|\\2|'>)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [1861 1879]
                      )
                    }
                  spids: [1860]
                )
              ]
              spids: [1860]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:VAL) op:Equal rhs:{(DQ )} spids:[1883])]
              spids: [1883]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SUFFIX)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ (${ VSub_Name SUFFIX))})
                                  (C {(tr)} {(A-Z)} {(a-z)})
                                ]
                                negated: F
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [1889 1905]
                      )
                    }
                  spids: [1888]
                )
              ]
              spids: [1888]
            )
            (Case
              to_match: {(DQ (${ VSub_Name SUFFIX))}
              arms: [
                (case_arm
                  pat_list: [{(z)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:VAL)
                          op: Equal
                          rhs: {(DQ (lzw))}
                          spids: [1922]
                        )
                      ]
                      spids: [1922]
                    )
                  ]
                  spids: [1919 1920 1927 16777215]
                )
                (case_arm
                  pat_list: [{(lzo)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:VAL)
                          op: Equal
                          rhs: {(DQ (lzo))}
                          spids: [1933]
                        )
                      ]
                      spids: [1933]
                    )
                  ]
                  spids: [1930 1931 1938 16777215]
                )
                (case_arm
                  pat_list: [{(lzw)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:VAL)
                          op: Equal
                          rhs: {(DQ (lzw))}
                          spids: [1944]
                        )
                      ]
                      spids: [1944]
                    )
                  ]
                  spids: [1941 1942 1949 16777215]
                )
                (case_arm
                  pat_list: [{(lzma)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:VAL)
                          op: Equal
                          rhs: {(DQ (lzma))}
                          spids: [1955]
                        )
                      ]
                      spids: [1955]
                    )
                  ]
                  spids: [1952 1953 1960 16777215]
                )
                (case_arm
                  pat_list: [{(gz)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:VAL)
                          op: Equal
                          rhs: {(DQ (gzip))}
                          spids: [1966]
                        )
                      ]
                      spids: [1966]
                    )
                  ]
                  spids: [1963 1964 1971 16777215]
                )
                (case_arm
                  pat_list: [{(bz2)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:VAL)
                          op: Equal
                          rhs: {(DQ (bzip2))}
                          spids: [1977]
                        )
                      ]
                      spids: [1977]
                    )
                  ]
                  spids: [1974 1975 1982 16777215]
                )
                (case_arm
                  pat_list: [{(xz)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:VAL)
                          op: Equal
                          rhs: {(DQ (xz))}
                          spids: [1988]
                        )
                      ]
                      spids: [1988]
                    )
                  ]
                  spids: [1985 1986 1993 16777215]
                )
                (case_arm
                  pat_list: [{(zip)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:VAL)
                          op: Equal
                          rhs: {(DQ (zip))}
                          spids: [1999]
                        )
                      ]
                      spids: [1999]
                    )
                  ]
                  spids: [1996 1997 2004 16777215]
                )
              ]
              spids: [1908 1916 2007]
            )
            (C {(export)} {(VAL)})
          ]
          spids: [1840]
        )
      spids: [1836 1839]
    )
    (Sentence
      child: 
        (FuncDef
          name: write_image
          body: 
            (BraceGroup
              children: [
                (Assignment
                  keyword: Assign_Local
                  pairs: [(assign_pair lhs:(LhsName name:DEVICE_FILE) op:Equal spids:[2027])]
                  spids: [2025]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:IMAGE_FILE)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$1'))}
                      spids: [2031]
                    )
                  ]
                  spids: [2031]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:DEVICE_FILE)
                      op: Equal
                      rhs: {(DQ ($ VSub_Number '$2'))}
                      spids: [2037]
                    )
                  ]
                  spids: [2037]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name IMAGE_FILE))} {(Lit_Other ']')})
                      ]
                      action: [(C {(exit_err)} {(DQ ('ERROR: Image file not specified!'))})]
                      spids: [16777215 2059]
                    )
                  ]
                  spids: [16777215 2069]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name DEVICE_FILE))} {(Lit_Other ']')})
                      ]
                      action: [(C {(exit_err)} {(DQ ('ERROR: Device file not specified!'))})]
                      spids: [16777215 2089]
                    )
                  ]
                  spids: [16777215 2099]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ (${ VSub_Name IMAGE_FILE))} 
                          {(Lit_Other ']')}
                        )
                      ]
                      action: [
                        (C {(exit_err)} 
                          {(DQ ("ERROR: '") (${ VSub_Name IMAGE_FILE) ("' does not exist!"))}
                        )
                      ]
                      spids: [16777215 2121]
                    )
                  ]
                  spids: [16777215 2135]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:DEVICE_FILE)
                      op: Equal
                      rhs: 
                        {
                          (DQ 
                            (BracedVarSub
                              token: <VSub_Name DEVICE_FILE>
                              suffix_op: 
                                (StringUnary
                                  op_id: VOp1_Pound
                                  arg_word: {(Lit_Slash /) (dev) (Lit_Slash /)}
                                )
                              spids: [2141 2147]
                            )
                          )
                        }
                      spids: [2139]
                    )
                  ]
                  spids: [2139]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:DEVICE_FILE)
                      op: Equal
                      rhs: {(DQ (/dev/) (${ VSub_Name DEVICE_FILE))}
                      spids: [2151]
                    )
                  ]
                  spids: [2151]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(Lit_Other '[')} {(KW_Bang '!')} {(-c)} {(DQ (${ VSub_Name DEVICE_FILE))} 
                          {(Lit_Other ']')}
                        )
                      ]
                      action: [
                        (C {(exit_err)} 
                          {
                            (DQ ("ERROR: '") (${ VSub_Name DEVICE_FILE) 
                              ("' is not a character device!")
                            )
                          }
                        )
                      ]
                      spids: [16777215 2179]
                    )
                  ]
                  spids: [16777215 2193]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [(C {(iscompressed)} {(DQ (${ VSub_Name IMAGE_FILE))})]
                      action: [
                        (Assignment
                          keyword: Assign_Local
                          pairs: [(assign_pair lhs:(LhsName name:COMPRESSION) op:Equal spids:[2213])]
                          spids: [2211]
                        )
                        (C {(get_compression_type)} {(DQ (${ VSub_Name IMAGE_FILE))})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:COMPRESSION)
                              op: Equal
                              rhs: {(DQ (${ VSub_Name VAL))}
                              spids: [2226]
                            )
                          ]
                          spids: [2226]
                        )
                        (Case
                          to_match: {(DQ (${ VSub_Name COMPRESSION))}
                          arms: [
                            (case_arm
                              pat_list: [{(lzw)}]
                              action: [
                                (C {(rc_halt)} 
                                  {
                                    (DQ ('uncompress ') (${ VSub_Name IMAGE_FILE) (' -c | dd of=') 
                                      (${ VSub_Name DEVICE_FILE)
                                    )
                                  }
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:IMAGE_FILE)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name IMAGE_FILE>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_Percent
                                                  arg_word: {(.Z)}
                                                )
                                              spids: [2266 2270]
                                            )
                                          )
                                        }
                                      spids: [2264]
                                    )
                                  ]
                                  spids: [2264]
                                )
                              ]
                              spids: [2246 2247 2274 16777215]
                            )
                            (case_arm
                              pat_list: [{(lzo)}]
                              action: [
                                (C {(rc_halt)} 
                                  {
                                    (DQ ('lzop -d ') ($ VSub_Name '$IMAGE_') ('{FILE} -c | dd of=') 
                                      (${ VSub_Name DEVICE_FILE)
                                    )
                                  }
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:IMAGE_FILE)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name IMAGE_FILE>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_Percent
                                                  arg_word: {(.lzo)}
                                                )
                                              spids: [2296 2300]
                                            )
                                          )
                                        }
                                      spids: [2294]
                                    )
                                  ]
                                  spids: [2294]
                                )
                              ]
                              spids: [2278 2279 2304 16777215]
                            )
                            (case_arm
                              pat_list: [{(lzma)}]
                              action: [
                                (C {(rc_halt)} 
                                  {
                                    (DQ ('lzma -d ') (${ VSub_Name IMAGE_FILE) (' -c | dd of=') 
                                      (${ VSub_Name DEVICE_FILE)
                                    )
                                  }
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:IMAGE_FILE)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name IMAGE_FILE>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_Percent
                                                  arg_word: {(.lzma)}
                                                )
                                              spids: [2328 2332]
                                            )
                                          )
                                        }
                                      spids: [2326]
                                    )
                                  ]
                                  spids: [2326]
                                )
                              ]
                              spids: [2308 2309 2336 16777215]
                            )
                            (case_arm
                              pat_list: [{(gzip)}]
                              action: [
                                (C {(rc_halt)} 
                                  {
                                    (DQ ('gunzip ') (${ VSub_Name IMAGE_FILE) (' -c | dd of=') 
                                      (${ VSub_Name DEVICE_FILE)
                                    )
                                  }
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:IMAGE_FILE)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name IMAGE_FILE>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_Percent
                                                  arg_word: {(.gz)}
                                                )
                                              spids: [2360 2364]
                                            )
                                          )
                                        }
                                      spids: [2358]
                                    )
                                  ]
                                  spids: [2358]
                                )
                              ]
                              spids: [2340 2341 2368 16777215]
                            )
                            (case_arm
                              pat_list: [{(bzip2)}]
                              action: [
                                (C {(rc_halt)} 
                                  {
                                    (DQ ('bunzip2 ') (${ VSub_Name IMAGE_FILE) (' -c | dd of=') 
                                      (${ VSub_Name DEVICE_FILE)
                                    )
                                  }
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:IMAGE_FILE)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name IMAGE_FILE>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_Percent
                                                  arg_word: {(.bz2)}
                                                )
                                              spids: [2392 2396]
                                            )
                                          )
                                        }
                                      spids: [2390]
                                    )
                                  ]
                                  spids: [2390]
                                )
                              ]
                              spids: [2372 2373 2400 16777215]
                            )
                            (case_arm
                              pat_list: [{(xz)}]
                              action: [
                                (C {(rc_halt)} 
                                  {
                                    (DQ ('xz -d ') (${ VSub_Name IMAGE_FILE) (' -c | dd of=') 
                                      (${ VSub_Name DEVICE_FILE)
                                    )
                                  }
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:IMAGE_FILE)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name IMAGE_FILE>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_Percent
                                                  arg_word: {(.xz)}
                                                )
                                              spids: [2424 2428]
                                            )
                                          )
                                        }
                                      spids: [2422]
                                    )
                                  ]
                                  spids: [2422]
                                )
                              ]
                              spids: [2404 2405 2432 16777215]
                            )
                            (case_arm
                              pat_list: [{(zip)}]
                              action: [
                                (C {(rc_halt)} 
                                  {
                                    (DQ ('unzip ') (${ VSub_Name IMAGE_FILE) (' -c | dd of=') 
                                      (${ VSub_Name DEVICE_FILE)
                                    )
                                  }
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:IMAGE_FILE)
                                      op: Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (BracedVarSub
                                              token: <VSub_Name IMAGE_FILE>
                                              suffix_op: 
                                                (StringUnary
                                                  op_id: VOp1_Percent
                                                  arg_word: {(.zip)}
                                                )
                                              spids: [2456 2460]
                                            )
                                          )
                                        }
                                      spids: [2454]
                                    )
                                  ]
                                  spids: [2454]
                                )
                              ]
                              spids: [2436 2437 2464 16777215]
                            )
                            (case_arm
                              pat_list: [{(Lit_Other '*')}]
                              action: [
                                (C {(exit_err)} 
                                  {
                                    (DQ ('ERROR: ') (${ VSub_Name COMPRESSION) 
                                      (' compression is not supported')
                                    )
                                  }
                                )
                              ]
                              spids: [2468 2469 2484 16777215]
                            )
                          ]
                          spids: [2235 2243 2487]
                        )
                      ]
                      spids: [16777215 2208]
                    )
                  ]
                  else_action: [
                    (C {(rc_halt)} 
                      {(DQ ('dd if=') (${ VSub_Name IMAGE_FILE) (' of=') (${ VSub_Name DEVICE_FILE))}
                    )
                  ]
                  spids: [2491 2509]
                )
              ]
              spids: [2022]
            )
          spids: [2018 2021]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: install_fresh
          body: 
            (BraceGroup
              children: [
                (C {(setup_disk_slice)})
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name ROOTIMAGE))} {(Lit_Other ']')})
                      ]
                      action: [
                        (C {(setup_disk_label)})
                        (C {(setup_filesystems)})
                        (C {(mount_all_filesystems)})
                        (C {(init_extraction)})
                        (C {(install_components)})
                        (C {(install_packages)})
                        (C {(run_localize)})
                        (C {(save_networking_install)})
                        (C {(setup_users)})
                        (C {(run_final_cleanup)})
                        (C {(run_commands)})
                        (C {(unmount_all_filesystems)})
                      ]
                      spids: [16777215 2549]
                    )
                  ]
                  spids: [16777215 2655]
                )
                (C {(echo_log)} {(DQ ('Installation finished!'))})
              ]
              spids: [2522]
            )
          spids: [2518 2521]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: install_extractonly
          body: 
            (BraceGroup
              children: [
                (C {(init_extraction)})
                (C {(install_components)})
                (C {(install_packages)})
                (C {(run_localize)})
                (C {(save_networking_install)})
                (C {(setup_users)})
                (C {(run_commands)})
                (C {(setup_hostname)})
                (C {(set_root_pw)})
                (C {(echo_log)} {(DQ ('Installation finished!'))})
              ]
              spids: [2676]
            )
          spids: [2672 2675]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: install_image
          body: 
            (BraceGroup
              children: [(C {(init_extraction)}) (C {(echo_log)} {(DQ ('Installation finished!'))})]
              spids: [2768]
            )
          spids: [2764 2767]
        )
      terminator: <Op_Semi ';'>
    )
    (Sentence
      child: 
        (FuncDef
          name: install_upgrade
          body: 
            (BraceGroup
              children: [
                (C {(mount_upgrade)})
                (C {(init_extraction)})
                (C {(run_localize)})
                (C {(run_commands)})
                (C {(merge_old_configs)})
                (C {(install_components)})
                (C {(install_packages)})
                (C {(unmount_upgrade)})
                (C {(echo_log)} {(DQ ('Upgrade finished!'))})
              ]
              spids: [2794]
            )
          spids: [2790 2793]
        )
      terminator: <Op_Semi ';'>
    )
  ]
)