(command.CommandList
  children: [
    (C {<.>} {(${ Id.VSub_Name BACKEND) <'/functions.sh'>})
    (C {<.>} {(${ Id.VSub_Name BACKEND) <'/functions-parse.sh'>})
    (command.Sentence
      child: 
        (command.ShFunction
          name: opt_fail
          body: 
            (BraceGroup
              children: [
                (C {<get_value_from_cfg>} {<installInteractive>})
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name VAL))} 
                              {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<echo_log>} {(DQ <'DISK ERROR: Unable to find installation disk!'>)})
                        (C {<echo_log>} {(DQ <'Please insert the installation disk and press enter.'>)})
                        (C {<read>} {<tmp>})
                      ]
                      spids: [120 139]
                    )
                  ]
                  else_action: [(C {<exit_err>} {(DQ <'ERROR: Unable to locate installation DVD/USB'>)})]
                )
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: opt_mount
          body: 
            (BraceGroup
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:FOUND)
                      op: assign_op.Equal
                      rhs: {(DQ <0>)}
                      spids: [191]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} 
                              {(DQ (${ Id.VSub_Name CDMNT))} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [(C {<mkdir>} {<-p>} {(${ Id.VSub_Name CDMNT)})]
                      spids: [202 219]
                    )
                  ]
                )
                (command.Pipeline
                  children: [
                    (C {<mount>})
                    (command.Simple
                      words: [{<grep>} {<-q>} {(DQ (${ Id.VSub_Name CDMNT) <' '>)}]
                      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 '['>} {<-e>} 
                                      {(DQ (${ Id.VSub_Name CDMNT) <'/'> (${ Id.VSub_Name INSFILE))} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (command.Simple
                                  words: [{<echo>} {(DQ <MOUNTED>)}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {(${ Id.VSub_Name TMPDIR) <'/cdmnt'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (C {<echo_log>} {(DQ <'FOUND DVD: MOUNTED'>)})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:FOUND)
                                      op: assign_op.Equal
                                      rhs: {(DQ <1>)}
                                      spids: [317]
                                    )
                                  ]
                                )
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Return return>
                                )
                              ]
                              spids: [275 294]
                            )
                          ]
                        )
                        (C {<opt_fail>})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Return return>
                        )
                      ]
                      spids: [259 272]
                    )
                  ]
                )
                (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: [351]
                            )
                          ]
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      children: [
                        (command.ForEach
                          iter_name: i
                          iter_words: [
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    words: [
                                      {<ls>}
                                      {<-1>}
                                      {<'/dev/acd'> <Id.Lit_Star '*'>}
                                      {<'/dev/cd'> <Id.Lit_Star '*'>}
                                      {<'/dev/scd'> <Id.Lit_Star '*'>}
                                      {<'/dev/rscd'> <Id.Lit_Star '*'>}
                                    ]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                              )
                            }
                          ]
                          do_arg_iter: F
                          body: 
                            (command.DoGroup
                              children: [
                                (C {<'/sbin/mount_cd9660'>} {($ Id.VSub_DollarName '$i')} 
                                  {(${ Id.VSub_Name CDMNT)}
                                )
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (C {<Id.Lit_LBracket '['>} {<-e>} 
                                              {
                                                (DQ (${ Id.VSub_Name CDMNT) <'/'> 
                                                  (${ Id.VSub_Name INSFILE)
                                                )
                                              } {<Id.Lit_RBracket ']'>}
                                            )
                                          ]
                                        )
                                      action: [
                                        (command.Simple
                                          words: [{<echo>} {(DQ (${ Id.VSub_Name i))}]
                                          redirects: [
                                            (redir
                                              op: <Id.Redir_Great '>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {(${ Id.VSub_Name TMPDIR) <'/cdmnt'>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (C {<echo_log>} {(DQ <'FOUND DVD: '> (${ Id.VSub_Name i))})
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:FOUND)
                                              op: assign_op.Equal
                                              rhs: {(DQ <1>)}
                                              spids: [461]
                                            )
                                          ]
                                        )
                                        (command.ControlFlow
                                          token: <Id.ControlFlow_Break break>
                                        )
                                      ]
                                      spids: [414 433]
                                    )
                                  ]
                                )
                                (command.Simple
                                  words: [{<'/sbin/umount'>} {(${ Id.VSub_Name CDMNT)}]
                                  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.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$FOUND'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <1>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (command.ForEach
                                  iter_name: i
                                  iter_words: [
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            words: [{<ls>} {<-1>} {<'/dev/da'> <Id.Lit_Star '*'>}]
                                            redirects: [
                                              (redir
                                                op: <Id.Redir_Great '2>'>
                                                loc: (redir_loc.Fd fd:2)
                                                arg: {<'/dev/null'>}
                                              )
                                            ]
                                            do_fork: T
                                          )
                                      )
                                    }
                                  ]
                                  do_arg_iter: F
                                  body: 
                                    (command.DoGroup
                                      children: [
                                        (C {<'/sbin/mount'>} {<-r>} {($ Id.VSub_DollarName '$i')} 
                                          {(${ Id.VSub_Name CDMNT)}
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                                                      {
                                                        (DQ (${ Id.VSub_Name CDMNT) <'/'> 
                                                          (${ Id.VSub_Name INSFILE)
                                                        )
                                                      } {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.Simple
                                                  words: [{<echo>} {(DQ (${ Id.VSub_Name i))}]
                                                  redirects: [
                                                    (redir
                                                      op: <Id.Redir_Great '>'>
                                                      loc: (redir_loc.Fd fd:1)
                                                      arg: {(${ Id.VSub_Name TMPDIR) <'/cdmnt'>}
                                                    )
                                                  ]
                                                  do_fork: T
                                                )
                                                (C {<echo_log>} 
                                                  {(DQ <'FOUND USB: '> (${ Id.VSub_Name i))}
                                                )
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:FOUND)
                                                      op: assign_op.Equal
                                                      rhs: {(DQ <1>)}
                                                      spids: [610]
                                                    )
                                                  ]
                                                )
                                                (command.ControlFlow
                                                  token: <Id.ControlFlow_Break break>
                                                )
                                              ]
                                              spids: [563 582]
                                            )
                                          ]
                                        )
                                        (command.Simple
                                          words: [{<'/sbin/umount'>} {(${ Id.VSub_Name CDMNT)}]
                                          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
                                        )
                                        (C {<'/sbin/mount'>} {<-r>} {<-t>} {<msdosfs>} 
                                          {($ Id.VSub_DollarName '$i')} {(${ Id.VSub_Name CDMNT)}
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} {<-e>} 
                                                      {
                                                        (DQ (${ Id.VSub_Name CDMNT) <'/'> 
                                                          (${ Id.VSub_Name INSFILE)
                                                        )
                                                      } {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.Simple
                                                  words: [{<echo>} {(DQ (${ Id.VSub_Name i))}]
                                                  redirects: [
                                                    (redir
                                                      op: <Id.Redir_Great '>'>
                                                      loc: (redir_loc.Fd fd:1)
                                                      arg: {(${ Id.VSub_Name TMPDIR) <'/cdmnt'>}
                                                    )
                                                  ]
                                                  do_fork: T
                                                )
                                                (C {<echo_log>} 
                                                  {(DQ <'FOUND USB: '> (${ Id.VSub_Name i))}
                                                )
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:FOUND)
                                                      op: assign_op.Equal
                                                      rhs: {(DQ <1>)}
                                                      spids: [707]
                                                    )
                                                  ]
                                                )
                                                (command.ControlFlow
                                                  token: <Id.ControlFlow_Break break>
                                                )
                                              ]
                                              spids: [660 679]
                                            )
                                          ]
                                        )
                                        (command.Simple
                                          words: [{<'/sbin/umount'>} {(${ Id.VSub_Name CDMNT)}]
                                          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: [494 512]
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$FOUND'))} 
                                      {<Id.Lit_Equals '='>} {(DQ <1>)} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)]
                              spids: [743 760]
                            )
                          ]
                        )
                        (C {<opt_fail>})
                      ]
                    )
                )
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.ShFunction
          name: opt_umount
          body: 
            (BraceGroup
              children: [
                (command.Simple
                  words: [{<'/sbin/umount'>} {(${ Id.VSub_Name CDMNT)}]
                  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
                )
              ]
            )
        )
      terminator: <Id.Op_Semi _>
    )
  ]
)