(command.CommandList
  children: [
    (C {<.>} {(${ Id.VSub_Name BACKEND) <'/functions-mountoptical.sh'>})
    (command.ShFunction
      name: start_extract_dist
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number '$1'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<exit_err>} {(DQ <'Called dist extraction with no directory set!'>)})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [101 115]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$INSFILE'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Sentence
                      child: (C {<exit_err>} {(DQ <'Called extraction with no install file set!'>)})
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [127 140]
                )
              ]
            )
            (C {<local>} {<Id.Lit_VarLike 'DDIR='> (DQ ($ Id.VSub_Number '$1'))})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name INSTALLMODE))} 
                              {<Id.Lit_Equals '='>} {(DQ <upgrade>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:TAROPTS)
                          op: assign_op.Equal
                          rhs: {(DQ <'-X '> (${ Id.VSub_Name PROGDIR) <'/conf/exclude-from-upgrade'>)}
                          spids: [187]
                        )
                      ]
                    )
                  ]
                  spids: [165 184]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:TAROPTS)
                      op: assign_op.Equal
                      rhs: {(DQ )}
                      spids: [200]
                    )
                  ]
                )
              ]
            )
            (command.ForEach
              iter_name: di
              iter_words: [{($ Id.VSub_DollarName '$INSFILE')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                                      {(DQ (${ Id.VSub_Name DDIR) <'/MANIFEST'>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:count)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Pipeline
                                            children: [
                                              (C {<grep>} {(DQ <'^'> (${ Id.VSub_Name di) <.txz>)} 
                                                {(${ Id.VSub_Name DDIR) <'/MANIFEST'>}
                                              )
                                              (C {<awk>} {(SQ <'{print $3}'>)})
                                            ]
                                            negated: F
                                          )
                                      )
                                    }
                                  spids: [249]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} 
                                              {(DQ ($ Id.VSub_DollarName '$count'))} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<echo>} 
                                      {(DQ <'INSTALLCOUNT: '> ($ Id.VSub_DollarName '$count'))}
                                    )
                                  ]
                                  spids: [278 294]
                                )
                              ]
                            )
                          ]
                          spids: [229 245]
                        )
                      ]
                    )
                    (C {<echo_log>} 
                      {(DQ <'pc-sysinstall: Starting Extraction ('> (${ Id.VSub_Name di) <')'>)}
                    )
                    (command.Simple
                      words: [
                        {<tar>}
                        {<-xpv>}
                        {<-C>}
                        {(${ Id.VSub_Name FSMNT)}
                        {<-f>}
                        {(${ Id.VSub_Name DDIR) <'/'> (${ Id.VSub_Name di) <.txz>}
                        {(${ Id.VSub_Name TAROPTS)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<1>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<exit_err>} 
                              {
                                (DQ <'ERROR: Failed extracting the dist file: '> 
                                  ($ Id.VSub_DollarName '$di')
                                )
                              }
                            )
                          ]
                          spids: [354 367]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name INSTALLMEDIUM))} 
                              {<Id.Lit_Equals '='>} {(DQ <ftp>)} {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<echo_log>} {(DQ <'Cleaning up downloaded archives'>)})
                    (C {<rm>} {<-rf>} {(${ Id.VSub_Name DDIR)})
                  ]
                  spids: [389 408]
                )
              ]
            )
            (C {<echo_log>} {(DQ <'pc-sysinstall: Extraction Finished'>)})
          ]
        )
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: start_extract_uzip_tar
          body: 
            (BraceGroup
              children: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-z>} 
                                  {(DQ ($ Id.VSub_DollarName '$INSFILE'))} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<exit_err>} {(DQ <'ERROR: Called extraction with no install file set!'>)})
                      ]
                      spids: [450 463]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-e>} 
                                  {(DQ (${ Id.VSub_Name INSFILE) <.count>)} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<echo>} 
                          {
                            (DQ <'INSTALLCOUNT: '> 
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: (C {<cat>} {(${ Id.VSub_Name INSFILE) <.count>})
                              )
                            )
                          }
                        )
                      ]
                      spids: [481 497]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name INSTALLMODE))} 
                                  {<Id.Lit_Equals '='>} {(DQ <upgrade>)} {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:TAROPTS)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ <'-X '> (${ Id.VSub_Name PROGDIR) <'/conf/exclude-from-upgrade'>)
                                }
                              spids: [547]
                            )
                          ]
                        )
                      ]
                      spids: [525 544]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:TAROPTS)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [560]
                        )
                      ]
                    )
                  ]
                )
                (C {<echo_log>} {(DQ <'pc-sysinstall: Starting Extraction'>)})
                (command.Case
                  to_match: {(${ Id.VSub_Name PACKAGETYPE)}
                  arms: [
                    (case_arm
                      pat_list: [{<uzip>}]
                      action: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (command.Pipeline
                                          children: [
                                            (C {<kldstat>} {<-v>})
                                            (C {<grep>} {<-q>} {(DQ <geom_uzip>)})
                                          ]
                                          negated: T
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [(C {<exit_err>} {(DQ <'Kernel module geom_uzip not loaded'>)})]
                              spids: [590 610]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:MDDEVICE)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (C {<mdconfig>} {<-a>} {<-t>} {<vnode>} {<-o>} {<readonly>} {<-f>} 
                                        {(${ Id.VSub_Name INSFILE)}
                                      )
                                  )
                                }
                              spids: [628]
                            )
                          ]
                        )
                        (C {<mkdir>} {<-p>} {(${ Id.VSub_Name FSMNT) <.uzip>})
                        (C {<mount>} {<-r>} {<'/dev/'> (${ Id.VSub_Name MDDEVICE) <.uzip>} 
                          {(${ Id.VSub_Name FSMNT) <.uzip>}
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<exit_err>} 
                                  {(DQ <'ERROR: Failed mounting the '> (${ Id.VSub_Name INSFILE))}
                                )
                              ]
                              spids: [678 691]
                            )
                          ]
                        )
                        (C {<cd>} {(${ Id.VSub_Name FSMNT) <.uzip>})
                        (command.Pipeline
                          children: [
                            (command.Simple
                              words: [{<tar>} {<cvf>} {<->} {<.>}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              words: [
                                {<tar>}
                                {<-xpv>}
                                {<-C>}
                                {(${ Id.VSub_Name FSMNT)}
                                {(${ Id.VSub_Name TAROPTS)}
                                {<-f>}
                                {<->}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_GreatAnd '2>&'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<1>}
                                )
                              ]
                              do_fork: T
                            )
                            (C {<tee>} {<-a>} {(${ Id.VSub_Name FSMNT) <'/.tar-extract.log'>})
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<cd>} {<'/'>})
                                (command.Simple
                                  words: [{<echo>} {(DQ <'TAR failure occurred:'>)}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_DGreat '>>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {(${ Id.VSub_Name LOGOUT)}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Pipeline
                                  children: [
                                    (C {<cat>} {(${ Id.VSub_Name FSMNT) <'/.tar-extract.log'>})
                                    (command.Simple
                                      words: [{<grep>} {(DQ <'tar:'>)}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {(${ Id.VSub_Name LOGOUT)}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  negated: F
                                )
                                (C {<umount>} {(${ Id.VSub_Name FSMNT) <.uzip>})
                                (C {<mdconfig>} {<-d>} {<-u>} {(${ Id.VSub_Name MDDEVICE)})
                                (C {<exit_err>} {(DQ <'ERROR: Failed extracting the tar image'>)})
                              ]
                              spids: [766 779]
                            )
                          ]
                        )
                        (C {<cd>} {<'/'>})
                        (C {<umount>} {(${ Id.VSub_Name FSMNT) <.uzip>})
                        (C {<mdconfig>} {<-d>} {<-u>} {(${ Id.VSub_Name MDDEVICE)})
                      ]
                      spids: [586 587 878 -1]
                    )
                    (case_arm
                      pat_list: [{<tar>}]
                      action: [
                        (command.Simple
                          words: [
                            {<tar>}
                            {<-xpv>}
                            {<-C>}
                            {(${ Id.VSub_Name FSMNT)}
                            {<-f>}
                            {(${ Id.VSub_Name INSFILE)}
                            {(${ Id.VSub_Name TAROPTS)}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<1>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                          {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (C {<exit_err>} {(DQ <'ERROR: Failed extracting the tar image'>)})
                              ]
                              spids: [912 925]
                            )
                          ]
                        )
                      ]
                      spids: [881 882 938 -1]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name INSTALLMEDIUM))} 
                              {<Id.Lit_Equals '='>} {(DQ <ftp>)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<echo_log>} {(DQ <'Cleaning up downloaded archive'>)})
                        (C {<rm>} {(${ Id.VSub_Name INSFILE)})
                        (command.Simple
                          words: [{<rm>} {(${ Id.VSub_Name INSFILE) <.count>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          words: [{<rm>} {(${ Id.VSub_Name INSFILE) <.md5>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      spids: [949 968]
                    )
                  ]
                )
                (C {<echo_log>} {(DQ <'pc-sysinstall: Extraction Finished'>)})
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: start_extract_split
          body: 
            (BraceGroup
              children: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name INSDIR))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<exit_err>} 
                          {(DQ <'ERROR: Called extraction with no install directory set!'>)}
                        )
                      ]
                      spids: [1040 1055]
                    )
                  ]
                )
                (C {<echo_log>} {(DQ <'pc-sysinstall: Starting Extraction'>)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:DESTDIR)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name FSMNT))}
                      spids: [1081]
                    )
                  ]
                )
                (C {<export>} {<DESTDIR>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:HERE)
                      op: assign_op.Equal
                      rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))}
                      spids: [1095]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:DIRS)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<ls>} {<-d>} {(${ Id.VSub_Name INSDIR) <'/'> <Id.Lit_Star '*'>})
                                  (C {<grep>} {<-Ev>} {(SQ <'(uzip|kernels|src)'>)})
                                ]
                                negated: F
                              )
                          )
                        }
                      spids: [1103]
                    )
                  ]
                )
                (command.ForEach
                  iter_name: dir
                  iter_words: [{(${ Id.VSub_Name DIRS)}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (C {<cd>} {(DQ (${ Id.VSub_Name dir))})
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ <install.sh>)} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<echo_log>} {(DQ <Extracting>)} 
                                  {
                                    (command_sub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: (C {<basename>} {(${ Id.VSub_Name dir)})
                                    )
                                  }
                                )
                                (command.Pipeline
                                  children: [
                                    (C {<echo>} {(DQ <y>)})
                                    (command.Simple
                                      words: [{<sh>} {<install.sh>}]
                                      redirects: [
                                        (redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {<'/dev/null'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  negated: F
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} 
                                              {<0>} {<Id.Lit_RBracket ']'>}
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<exit_err>} 
                                          {(DQ <'ERROR: Failed extracting '> (${ Id.VSub_Name dir))}
                                        )
                                      ]
                                      spids: [1199 1212]
                                    )
                                  ]
                                )
                              ]
                              spids: [1150 1163]
                            )
                          ]
                          else_action: [
                            (C {<exit_err>} 
                              {(DQ <'ERROR: '> (${ Id.VSub_Name dir) <'/install.sh does not exist'>)}
                            )
                          ]
                        )
                      ]
                    )
                )
                (C {<cd>} {(DQ (${ Id.VSub_Name HERE))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:KERNELS)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<ls>} {<-d>} {(${ Id.VSub_Name INSDIR) <'/'> <Id.Lit_Star '*'>})
                                  (C {<grep>} {<kernels>})
                                ]
                                negated: F
                              )
                          )
                        }
                      spids: [1259]
                    )
                  ]
                )
                (C {<cd>} {(DQ (${ Id.VSub_Name KERNELS))})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ <install.sh>)} {<Id.Lit_RBracket ']'>})
                          ]
                        )
                      action: [
                        (C {<echo_log>} {(DQ <Extracting>)} 
                          {
                            (command_sub
                              left_token: <Id.Left_Backtick '`'>
                              child: (C {<basename>} {(${ Id.VSub_Name KERNELS)})
                            )
                          }
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {(DQ <y>)})
                            (command.Simple
                              words: [{<sh>} {<install.sh>} {<generic>}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<exit_err>} 
                                  {(DQ <'ERROR: Failed extracting '> (${ Id.VSub_Name KERNELS))}
                                )
                              ]
                              spids: [1339 1352]
                            )
                          ]
                        )
                        (C {<rm>} {<-rf>} {(DQ (${ Id.VSub_Name FSMNT) <'/boot/kernel'>)})
                        (C {<mv>} {(DQ (${ Id.VSub_Name FSMNT) <'/boot/GENERIC'>)} 
                          {(DQ (${ Id.VSub_Name FSMNT) <'/boot/kernel'>)}
                        )
                      ]
                      spids: [1288 1301]
                    )
                  ]
                  else_action: [
                    (C {<exit_err>} 
                      {(DQ <'ERROR: '> (${ Id.VSub_Name KERNELS) <'/install.sh does not exist'>)}
                    )
                  ]
                )
                (C {<cd>} {(DQ (${ Id.VSub_Name HERE))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:SOURCE)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Pipeline
                                children: [
                                  (C {<ls>} {<-d>} {(${ Id.VSub_Name INSDIR) <'/'> <Id.Lit_Star '*'>})
                                  (C {<grep>} {<src>})
                                ]
                                negated: F
                              )
                          )
                        }
                      spids: [1424]
                    )
                  ]
                )
                (C {<cd>} {(DQ (${ Id.VSub_Name SOURCE))})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ <install.sh>)} {<Id.Lit_RBracket ']'>})
                          ]
                        )
                      action: [
                        (C {<echo_log>} {(DQ <Extracting>)} 
                          {
                            (command_sub
                              left_token: <Id.Left_Backtick '`'>
                              child: (C {<basename>} {(${ Id.VSub_Name SOURCE)})
                            )
                          }
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {(DQ <y>)})
                            (command.Simple
                              words: [{<sh>} {<install.sh>} {<all>}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<exit_err>} 
                                  {(DQ <'ERROR: Failed extracting '> (${ Id.VSub_Name SOURCE))}
                                )
                              ]
                              spids: [1504 1517]
                            )
                          ]
                        )
                      ]
                      spids: [1453 1466]
                    )
                  ]
                  else_action: [
                    (C {<exit_err>} 
                      {(DQ <'ERROR: '> (${ Id.VSub_Name SOURCE) <'/install.sh does not exist'>)}
                    )
                  ]
                )
                (C {<cd>} {(DQ (${ Id.VSub_Name HERE))})
                (C {<echo_log>} {(DQ <'pc-sysinstall: Extraction Finished'>)})
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: fetch_dist_file
          body: 
            (BraceGroup
              children: [
                (C {<get_value_from_cfg>} {<ftpPath>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$VAL'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<exit_err>} 
                          {
                            (DQ 
                              <'ERROR: Install medium was set to ftp, but no ftpPath was provided!'>
                            )
                          }
                        )
                      ]
                      spids: [1585 1598]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:FTPPATH)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name VAL))}
                      spids: [1613]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name FSMNT) <'/usr'>)} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:DLDIR)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name FSMNT) <'/usr/.fetch.'> ($ Id.VSub_Dollar '$$'))
                                }
                              spids: [1646]
                            )
                          ]
                        )
                      ]
                      spids: [1627 1643]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DLDIR)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name FSMNT) <'/.fetch.'> ($ Id.VSub_Dollar '$$'))}
                          spids: [1659]
                        )
                      ]
                    )
                  ]
                )
                (C {<mkdir>} {<-p>} {(${ Id.VSub_Name DLDIR)})
                (command.ForEach
                  iter_name: di
                  iter_words: [{($ Id.VSub_DollarName '$INSFILE')}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (C {<fetch_file>} 
                          {(DQ (${ Id.VSub_Name FTPPATH) <'/'> (${ Id.VSub_Name di) <.txz>)} {(DQ (${ Id.VSub_Name DLDIR) <'/'> (${ Id.VSub_Name di) <.txz>)} {(DQ <1>)}
                        )
                      ]
                    )
                )
                (C {<fetch_file>} {(DQ (${ Id.VSub_Name FTPPATH) <'/MANIFEST'>)} 
                  {(DQ (${ Id.VSub_Name DLDIR) <'/MANIFEST'>)} {(DQ <0>)}
                )
                (C {<export>} {<DLDIR>})
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: fetch_install_file
          body: 
            (BraceGroup
              children: [
                (C {<get_value_from_cfg>} {<ftpPath>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$VAL'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<exit_err>} 
                          {
                            (DQ 
                              <'ERROR: Install medium was set to ftp, but no ftpPath was provided!'>
                            )
                          }
                        )
                      ]
                      spids: [1783 1796]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:FTPPATH)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name VAL))}
                      spids: [1811]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name FSMNT) <'/usr'>)} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:OUTFILE)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ (${ Id.VSub_Name FSMNT) <'/usr/.fetch-'> 
                                    (${ Id.VSub_Name INSFILE)
                                  )
                                }
                              spids: [1844]
                            )
                          ]
                        )
                      ]
                      spids: [1825 1841]
                    )
                  ]
                  else_action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:OUTFILE)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name FSMNT) <'/.fetch-'> (${ Id.VSub_Name INSFILE))}
                          spids: [1859]
                        )
                      ]
                    )
                  ]
                )
                (C {<fetch_file>} {(DQ (${ Id.VSub_Name FTPPATH) <'/'> (${ Id.VSub_Name INSFILE))} 
                  {(DQ (${ Id.VSub_Name OUTFILE))} {(DQ <1>)}
                )
                (C {<fetch_file>} 
                  {(DQ (${ Id.VSub_Name FTPPATH) <'/'> (${ Id.VSub_Name INSFILE) <.count>)} {(DQ (${ Id.VSub_Name OUTFILE) <.count>)} {(DQ <0>)}
                )
                (C {<fetch_file>} 
                  {(DQ (${ Id.VSub_Name FTPPATH) <'/'> (${ Id.VSub_Name INSFILE) <.md5>)} {(DQ (${ Id.VSub_Name OUTFILE) <.md5>)} {(DQ <0>)}
                )
                (C {<export>} {<Id.Lit_VarLike 'INSFILE='> (DQ (${ Id.VSub_Name OUTFILE))})
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.ShFunction
      name: fetch_split_files
      body: 
        (BraceGroup
          children: [
            (C {<get_ftpHost>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$VAL'))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (C {<exit_err>} 
                      {(DQ <'ERROR: Install medium was set to ftp, but no ftpHost was provided!'>)}
                    )
                  ]
                  spids: [1994 2007]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FTPHOST)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name VAL))}
                  spids: [2021]
                )
              ]
            )
            (C {<get_ftpDir>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$VAL'))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (C {<exit_err>} 
                      {(DQ <'ERROR: Install medium was set to ftp, but no ftpDir was provided!'>)}
                    )
                  ]
                  spids: [2033 2046]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FTPDIR)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name VAL))}
                  spids: [2060]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-d>} {(DQ (${ Id.VSub_Name FSMNT) <'/usr'>)} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:OUTFILE)
                          op: assign_op.Equal
                          rhs: 
                            {(DQ (${ Id.VSub_Name FSMNT) <'/usr/.fetch-'> (${ Id.VSub_Name INSFILE))}
                          spids: [2092]
                        )
                      ]
                    )
                  ]
                  spids: [2073 2089]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:OUTFILE)
                      op: assign_op.Equal
                      rhs: {(DQ (${ Id.VSub_Name FSMNT) <'/.fetch-'> (${ Id.VSub_Name INSFILE))}
                      spids: [2107]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DIRS)
                  op: assign_op.Equal
                  rhs: {(DQ <'base catpages dict doc info manpages proflibs kernels src'>)}
                  spids: [2123]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name FBSD_ARCH))} 
                          {<Id.Lit_Equals '='>} {(DQ <amd64>)} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DIRS)
                          op: assign_op.Equal
                          rhs: {(DQ (${ Id.VSub_Name DIRS) <' lib32'>)}
                          spids: [2151]
                        )
                      ]
                    )
                  ]
                  spids: [2129 2148]
                )
              ]
            )
            (command.ForEach
              iter_name: d
              iter_words: [{(${ Id.VSub_Name DIRS)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<mkdir>} {<-p>} {(DQ (${ Id.VSub_Name OUTFILE) <'/'> (${ Id.VSub_Name d))})
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NETRC)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name OUTFILE) <'/.netrc'>)}
                  spids: [2198]
                )
              ]
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 2230
                      stdin_parts: [
                        <'machine '>
                        (${ Id.VSub_Name FTPHOST)
                        <'\n'>
                        <'login anonymous\n'>
                        <'password anonymous\n'>
                        <'macdef INSTALL\n'>
                        <'bin\n'>
                        <'prompt\n'>
                      ]
                    )
                )
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ (${ Id.VSub_Name NETRC))}
                )
              ]
              do_fork: T
            )
            (command.ForEach
              iter_name: d
              iter_words: [{(${ Id.VSub_Name DIRS)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.Simple
                      words: [{<cat>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DLess '<<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: 
                            (redir_param.HereDoc
                              here_begin: {<EOF>}
                              here_end_span_id: 2279
                              stdin_parts: [
                                <'cd '>
                                (${ Id.VSub_Name FTPDIR)
                                <'/'>
                                (${ Id.VSub_Name d)
                                <'\n'>
                                <'lcd '>
                                (${ Id.VSub_Name OUTFILE)
                                <'/'>
                                (${ Id.VSub_Name d)
                                <'\n'>
                                <'mreget *\n'>
                              ]
                            )
                        )
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ (${ Id.VSub_Name NETRC))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                )
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 2301
                      stdin_parts: [<'bye\n'> <'\n'> <'\n'>]
                    )
                )
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ (${ Id.VSub_Name NETRC))}
                )
              ]
              do_fork: T
            )
            (command.Pipeline
              children: [
                (C {<echo>} {(DQ <Id.Lit_Dollar '$'> <' INSTALL'>)})
                (C {<ftp>} {<-N>} {(DQ (${ Id.VSub_Name NETRC))} {(DQ (${ Id.VSub_Name FTPHOST))})
              ]
              negated: F
            )
            (C {<export>} {<Id.Lit_VarLike 'INSFILE='> (DQ (${ Id.VSub_Name OUTFILE))})
          ]
        )
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: start_rsync_copy
          body: 
            (BraceGroup
              children: [
                (C {<get_value_from_cfg>} {<rsyncPath>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name VAL))} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<exit_err>} 
                          {
                            (DQ 
                              <'ERROR: rsyncPath is unset! Please check your config and try again.'>
                            )
                          }
                        )
                      ]
                      spids: [2370 2385]
                    )
                  ]
                )
                (C {<export>} {<Id.Lit_VarLike 'RSYNCPATH='> (DQ (${ Id.VSub_Name VAL))})
                (C {<get_value_from_cfg>} {<rsyncHost>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name VAL))} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<exit_err>} 
                          {
                            (DQ 
                              <'ERROR: rsyncHost is unset! Please check your config and try again.'>
                            )
                          }
                        )
                      ]
                      spids: [2414 2429]
                    )
                  ]
                )
                (C {<export>} {<Id.Lit_VarLike 'RSYNCHOST='> (DQ (${ Id.VSub_Name VAL))})
                (C {<get_value_from_cfg>} {<rsyncUser>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name VAL))} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<exit_err>} 
                          {
                            (DQ 
                              <'ERROR: rsyncUser is unset! Please check your config and try again.'>
                            )
                          }
                        )
                      ]
                      spids: [2458 2473]
                    )
                  ]
                )
                (C {<export>} {<Id.Lit_VarLike 'RSYNCUSER='> (DQ (${ Id.VSub_Name VAL))})
                (C {<get_value_from_cfg>} {<rsyncPort>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name VAL))} 
                                  {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      action: [
                        (C {<exit_err>} 
                          {
                            (DQ 
                              <'ERROR: rsyncPort is unset! Please check your config and try again.'>
                            )
                          }
                        )
                      ]
                      spids: [2502 2517]
                    )
                  ]
                )
                (C {<export>} {<Id.Lit_VarLike 'RSYNCPORT='> (DQ (${ Id.VSub_Name VAL))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:COUNT)
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [2541]
                    )
                  ]
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:z)
                              op: assign_op.Equal
                              rhs: {<1>}
                              spids: [2548]
                            )
                          ]
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name COUNT)} {<-gt>} 
                                      {(${ Id.VSub_Name RSYNCTRIES)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<exit_err>} {(DQ <'ERROR: Failed rsync command!'>)})
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Break break>
                                )
                              ]
                              spids: [2555 2572]
                            )
                          ]
                        )
                        (C {<rsync>} {<-avvzHsR>} 
                          {<--rsync-path> <Id.Lit_Equals '='> (DQ <'rsync --fake-super'>)} {<-e>} {(DQ <'ssh -p '> (${ Id.VSub_Name RSYNCPORT))} 
                          {(${ Id.VSub_Name RSYNCUSER) <Id.Lit_At '@'> (${ Id.VSub_Name RSYNCHOST) 
                            <Id.Lit_Colon ':'> (${ Id.VSub_Name RSYNCPATH) <'/./'>
                          } {(${ Id.VSub_Name FSMNT)}
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<echo>} {(DQ <'Rsync failed! Tries: '> (${ Id.VSub_Name COUNT))})
                              ]
                              spids: [2632 2645]
                            )
                          ]
                          else_action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COUNT)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (word_part.ArithSub
                                    anode: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Plus
                                        left: <Id.Lit_ArithVarLike COUNT>
                                        right: {<Id.Lit_Digits 1>}
                                      )
                                  )
                                }
                              spids: [2668]
                            )
                          ]
                        )
                      ]
                    )
                )
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: start_image_install
          body: 
            (BraceGroup
              children: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name IMAGE_FILE))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<exit_err>} 
                          {(DQ <'ERROR: installMedium set to image but no image file specified!'>)}
                        )
                      ]
                      spids: [2692 2707]
                    )
                  ]
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: (condition.Shell commands:[(C {<read>} {<line>})])
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_DollarName '$line')})
                            (command.Simple
                              words: [{<grep>} {<-q>} {(DQ <'^disk0='>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<get_value_from_string>} {(DQ (${ Id.VSub_Name line))})
                                (C {<strip_white_space>} {(DQ ($ Id.VSub_DollarName '$VAL'))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:DISK)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$VAL'))}
                                      spids: [2789]
                                    )
                                  ]
                                )
                              ]
                              spids: [2753 2766]
                            )
                          ]
                        )
                        (command.Pipeline
                          children: [
                            (C {<echo>} {($ Id.VSub_DollarName '$line')})
                            (command.Simple
                              words: [{<grep>} {<-q>} {(DQ <'^commitDiskPart'>)}]
                              redirects: [
                                (redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          negated: F
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (C {<Id.Lit_LBracket '['>} {<-n>} 
                                              {(DQ (${ Id.VSub_Name DISK))} {<Id.Lit_RBracket ']'>}
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<write_image>} {(DQ (${ Id.VSub_Name IMAGE_FILE))} 
                                          {(DQ (${ Id.VSub_Name DISK))}
                                        )
                                        (C {<unset>} {<DISK>})
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Break break>
                                        )
                                      ]
                                      spids: [2837 2852]
                                    )
                                  ]
                                  else_action: [
                                    (C {<exit_err>} 
                                      {
                                        (DQ 
                                          <
'ERROR: commitDiskPart was called without procceding disk<num>= and partition= entries!!!'
                                          >
                                        )
                                      }
                                    )
                                  ]
                                )
                              ]
                              spids: [2817 2830]
                            )
                          ]
                        )
                      ]
                    )
                  redirects: [
                    (redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(${ Id.VSub_Name CFGF)}
                    )
                  ]
                )
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: init_extraction
          body: 
            (BraceGroup
              children: [
                (C {<get_value_from_cfg>} {<installFile>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name VAL))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [(C {<export>} {<Id.Lit_VarLike 'INSFILE='> (DQ (${ Id.VSub_Name VAL))})]
                      spids: [2937 2952]
                    )
                  ]
                  else_action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$INSTALLTYPE'))} 
                                  {<Id.Lit_Equals '='>} {(DQ <FreeBSD>)} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$PACKAGETYPE')}
                              arms: [
                                (case_arm
                                  pat_list: [{<uzip>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:INSFILE)
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name FBSD_UZIP_FILE))}
                                          spids: [3002]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [2999 3000 3009 -1]
                                )
                                (case_arm
                                  pat_list: [{<tar>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:INSFILE)
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name FBSD_TAR_FILE))}
                                          spids: [3015]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [3012 3013 3022 -1]
                                )
                                (case_arm
                                  pat_list: [{<dist>}]
                                  action: [
                                    (C {<get_value_from_cfg_with_spaces>} {<distFiles>})
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Sentence
                                                  child: 
                                                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                                                      {(DQ ($ Id.VSub_DollarName '$VAL'))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          action: [(C {<exit_err>} {(DQ <'No dist files specified!'>)})]
                                          spids: [3035 3049]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:INSFILE)
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name VAL))}
                                          spids: [3062]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [3025 3026 3071 -1]
                                )
                                (case_arm
                                  pat_list: [{<split>}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:INSDIR)
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name FBSD_BRANCH_DIR))}
                                          spids: [3078]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:INSFILE)
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name INSDIR))}
                                          spids: [3091]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [3074 3075 3099 -1]
                                )
                              ]
                            )
                          ]
                          spids: [2972 2989]
                        )
                      ]
                      else_action: [
                        (command.Case
                          to_match: {($ Id.VSub_DollarName '$PACKAGETYPE')}
                          arms: [
                            (case_arm
                              pat_list: [{<uzip>}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:INSFILE)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name UZIP_FILE))}
                                      spids: [3118]
                                    )
                                  ]
                                )
                              ]
                              spids: [3115 3116 3125 -1]
                            )
                            (case_arm
                              pat_list: [{<tar>}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:INSFILE)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name TAR_FILE))}
                                      spids: [3131]
                                    )
                                  ]
                                )
                              ]
                              spids: [3128 3129 3138 -1]
                            )
                            (case_arm
                              pat_list: [{<dist>}]
                              action: [
                                (C {<get_value_from_cfg_with_spaces>} {<distFiles>})
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Sentence
                                              child: 
                                                (C {<Id.Lit_LBracket '['>} {<-z>} 
                                                  {(DQ ($ Id.VSub_DollarName '$VAL'))} {<Id.Lit_RBracket ']'>}
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                        )
                                      action: [(C {<exit_err>} {(DQ <'No dist files specified!'>)})]
                                      spids: [3151 3165]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:INSFILE)
                                      op: assign_op.Equal
                                      rhs: {(DQ (${ Id.VSub_Name VAL))}
                                      spids: [3178]
                                    )
                                  ]
                                )
                              ]
                              spids: [3141 3142 3187 -1]
                            )
                          ]
                        )
                      ]
                    )
                    (C {<export>} {<INSFILE>})
                  ]
                )
                (command.Case
                  to_match: {(${ Id.VSub_Name INSTALLMEDIUM)}
                  arms: [
                    (case_arm
                      pat_list: [{<dvd>} {<usb>}]
                      action: [
                        (C {<opt_mount>})
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name INSDIR))} 
                                      {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (command.Sentence
                                  child: 
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:INSDIR)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name CDMNT) <'/'> 
                                                (${ Id.VSub_Name INSDIR)
                                              )
                                            }
                                          spids: [3250]
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                                (C {<export>} {<INSDIR>})
                                (C {<start_extract_split>})
                              ]
                              spids: [3232 3247]
                            )
                          ]
                          else_action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName '$PACKAGETYPE'))} {<Id.Lit_Equals '='>} {(DQ <dist>)} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (C {<start_extract_dist>} 
                                      {(DQ (${ Id.VSub_Name CDMNT) <'/usr/freebsd-dist'>)}
                                    )
                                  ]
                                  spids: [3275 3293]
                                )
                              ]
                              else_action: [
                                (command.Sentence
                                  child: 
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:INSFILE)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ (${ Id.VSub_Name CDMNT) <'/'> 
                                                (${ Id.VSub_Name INSFILE)
                                              )
                                            }
                                          spids: [3309]
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                                (C {<export>} {<INSFILE>})
                                (C {<start_extract_uzip_tar>})
                              ]
                            )
                          ]
                        )
                      ]
                      spids: [3218 3221 3336 -1]
                    )
                    (case_arm
                      pat_list: [{<ftp>}]
                      action: [
                        (command.Case
                          to_match: {($ Id.VSub_DollarName '$PACKAGETYPE')}
                          arms: [
                            (case_arm
                              pat_list: [{<split>}]
                              action: [
                                (C {<fetch_split_files>})
                                (command.Sentence
                                  child: 
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:INSDIR)
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name INSFILE))}
                                          spids: [3359]
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                                (C {<export>} {<INSDIR>})
                                (C {<start_extract_split>})
                              ]
                              spids: [3351 3352 3376 -1]
                            )
                            (case_arm
                              pat_list: [{<dist>}]
                              action: [
                                (C {<fetch_dist_file>})
                                (C {<start_extract_dist>} {(DQ ($ Id.VSub_DollarName '$DLDIR'))})
                              ]
                              spids: [3379 3380 3393 -1]
                            )
                            (case_arm
                              pat_list: [{<Id.Lit_Star '*'>}]
                              action: [(C {<fetch_install_file>}) (C {<start_extract_uzip_tar>})]
                              spids: [3396 3397 3407 -1]
                            )
                          ]
                        )
                      ]
                      spids: [3340 3341 3413 -1]
                    )
                    (case_arm pat_list:[{<sftp>}] spids:[3417 3418 3420 -1])
                    (case_arm
                      pat_list: [{<rsync>}]
                      action: [(C {<start_rsync_copy>})]
                      spids: [3424 3425 3429 -1]
                    )
                    (case_arm
                      pat_list: [{<image>}]
                      action: [(C {<start_image_install>})]
                      spids: [3432 3433 3437 -1]
                    )
                    (case_arm
                      pat_list: [{<local>}]
                      action: [
                        (C {<get_value_from_cfg>} {<localPath>})
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                                      {(DQ ($ Id.VSub_DollarName '$VAL'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<exit_err>} 
                                  {
                                    (DQ 
                                      <
'Install medium was set to local, but no localPath was provided!'
                                      >
                                    )
                                  }
                                )
                              ]
                              spids: [3449 3462]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:LOCALPATH)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName '$VAL')}
                              spids: [3475]
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} 
                                          {(DQ ($ Id.VSub_DollarName '$PACKAGETYPE'))} {<Id.Lit_Equals '='>} {(DQ <dist>)} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.Sentence
                                  child: 
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:INSFILE)
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name INSFILE))}
                                          spids: [3500]
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                                (C {<export>} {<INSFILE>})
                                (C {<start_extract_dist>} {(DQ ($ Id.VSub_DollarName '$LOCALPATH'))})
                              ]
                              spids: [3479 3497]
                            )
                          ]
                          else_action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:INSFILE)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ (${ Id.VSub_Name LOCALPATH) <'/'> 
                                            (${ Id.VSub_Name INSFILE)
                                          )
                                        }
                                      spids: [3524]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (C {<export>} {<INSFILE>})
                            (C {<start_extract_uzip_tar>})
                          ]
                        )
                      ]
                      spids: [3440 3441 3548 -1]
                    )
                    (case_arm
                      pat_list: [{<Id.Lit_Star '*'>}]
                      action: [(C {<exit_err>} {(DQ <'ERROR: Unknown install medium'>)})]
                      spids: [3551 3552 3560 -1]
                    )
                  ]
                )
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
  ]
)