(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LOCALRC)
          op: assign_op.Equal
          rhs: {<'/usr/etc/rc.local'>}
          spids: [28]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MYLOCALRC)
          op: assign_op.Equal
          rhs: {<'/mnt/etc/rc.local'>}
          spids: [31]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ROOTMB)
          op: assign_op.Equal
          rhs: {<16>}
          spids: [34]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ROOTSECTS)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (C {<expr>} {($ Id.VSub_DollarName '$ROOTMB')} {(SQ <'*'>)} {<1024>} {(SQ <'*'>)} {<2>})
                )
              )
            }
          spids: [37]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:USRKBFILE)
          op: assign_op.Equal
          rhs: {<'/.usrkb'>}
          spids: [60]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                  {(DQ ($ Id.VSub_DollarName '$USRKBFILE'))} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Are you really running from CD?'>)})
            (C {<echo>} {(DQ <'No '> ($ Id.VSub_DollarName '$USRKBFILE') <' file.'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [63 77]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:USRKB)
          op: assign_op.Equal
          rhs: {(DQ (command_sub left_token:<Id.Left_Backtick '`'> child:(C {<cat>} {<'/.usrkb'>})))}
          spids: [101]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TOTALMB)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (C {<expr>} {<3>} {<Id.Lit_Other '+'>} {($ Id.VSub_DollarName '$USRKB')} {<'/'>} 
                      {<1024>} {<Id.Lit_Other '+'>} {($ Id.VSub_DollarName '$ROOTMB')}
                    )
                )
              )
            }
          spids: [112]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ROOTFILES)
          op: assign_op.Equal
          rhs: {(DQ (command_sub left_token:<Id.Left_Backtick '`'> child:(C {<cat>} {<'/.rootfiles'>})))}
          spids: [135]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:USRFILES)
          op: assign_op.Equal
          rhs: {(DQ (command_sub left_token:<Id.Left_Backtick '`'> child:(C {<cat>} {<'/.usrfiles'>})))}
          spids: [146]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$TOTALMB'))} {<-lt>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Are you really running from CD?'>)})
            (C {<echo>} {(DQ <'Something wrong with size estimate on CD.'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [158 172]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$ROOTFILES'))} {<-lt>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Are you really running from CD?'>)})
            (C {<echo>} {(DQ <'Something wrong with root files count on CD.'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [197 211]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$USRFILES'))} {<-lt>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Are you really running from CD?'>)})
            (C {<echo>} {(DQ <'Something wrong with usr files count on CD.'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [236 250]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PATH)
          op: assign_op.Equal
          rhs: {<'/bin'> <Id.Lit_Colon ':'> <'/usr/bin'>}
          spids: [275]
        )
      ]
    )
    (C {<export>} {<PATH>})
    (command.ShFunction
      name: usage
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {(SQ <EOF>)}
                      here_end_span_id: 312
                      stdin_parts: [
                        <'Usage:\tsetup\t\t# Install a skeleton system on the hard disk.\n'>
                        <'\tsetup /usr\t# Install the rest of the system (binaries or sources).\n'>
                        <'\n'>
                        <'\t# To install from other things then floppies:\n'>
                        <'\n'>
                        <'\turlget http://... | setup /usr\t\t# Read from a web site.\n'>
                        <'\turlget ftp://... | setup /usr\t\t# Read from an FTP site.\n'>
                        <'\tmtools copy c0d0p0:... - | setup /usr\t# Read from the C: drive.\n'>
                        <'\tdosread c0d0p0 ... | setup /usr\t\t# Likewise if no mtools.\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
    )
    (command.ShFunction
      name: warn
      body: 
        (BraceGroup
          children: [
            (C {<echo>} {<-e>} 
              {
                (DQ <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> 
                  <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> 
                  <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> 
                  <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> 
                  <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> 
                  <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> <Id.Lit_BadBackslash '\\'> <b> 
                  <Id.Lit_BadBackslash '\\'> <'b ! '> ($ Id.VSub_Number '$1')
                )
              }
            )
          ]
        )
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: (C {<getopts>} {(SQ )} {<opt>})
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          children: [(command.Sentence child:(C {<usage>}) terminator:<Id.Op_Semi _>)]
        )
    )
    (C {<shift>} 
      {
        (command_sub
          left_token: <Id.Left_Backtick '`'>
          child: (C {<expr>} {($ Id.VSub_DollarName '$OPTIND')} {<->} {<1>})
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$USER'))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<root>} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Please run setup as root.'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [421 436]
        )
      ]
    )
    (command.Simple
      words: [{<exec>}]
      redirects: [
        (redir op:<Id.Redir_LessAnd '9<&'> loc:(redir_loc.Fd fd:9) arg:{<0>})
        (redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<'/etc/mtab'>})
      ]
      do_fork: T
    )
    (C {<read>} {<thisroot>} {<rest>})
    (C {<read>} {<fdusr>} {<rest>})
    (command.Simple
      words: [{<exec>}]
      redirects: [
        (redir op:<Id.Redir_LessAnd '0<&'> loc:(redir_loc.Fd fd:0) arg:{<9>})
        (redir op:<Id.Redir_LessAnd '9<&'> loc:(redir_loc.Fd fd:9) arg:{<->})
      ]
      do_fork: T
    )
    (command.Case
      to_match: 
        {($ Id.VSub_DollarName '$thisroot') <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$fdusr')}
      arms: [
        (case_arm
          pat_list: [{<'/dev/ram'> <Id.Lit_Colon ':'> <'/dev/fd0p2'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fdroot)
                  op: assign_op.Equal
                  rhs: {<'/dev/fd0'>}
                  spids: [509]
                )
              ]
            )
          ]
          spids: [504 507 516 -1]
        )
        (case_arm
          pat_list: [{<'/dev/ram'> <Id.Lit_Colon ':'> <'/dev/fd1p2'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fdroot)
                  op: assign_op.Equal
                  rhs: {<'/dev/fd1'>}
                  spids: [523]
                )
              ]
            )
          ]
          spids: [518 521 530 -1]
        )
        (case_arm
          pat_list: [{<'/dev/ram'> <Id.Lit_Colon ':'> <'/dev/fd'> <Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fdroot)
                  op: assign_op.Equal
                  rhs: {<unknown>}
                  spids: [538]
                )
              ]
            )
          ]
          spids: [532 536 545 -1]
        )
        (case_arm
          pat_list: [{<'/dev/fd'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <'/dev/fd'> <Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fdroot)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$thisroot')}
                  spids: [554]
                )
              ]
            )
          ]
          spids: [547 552 561 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fdroot)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$thisroot')}
                  spids: [566]
                )
              ]
            )
          ]
          spids: [563 564 -1 572]
        )
      ]
    )
    (C {<echo>} {<-n>} 
      {
        (DQ <'\n'> 
          <'Welcome to the MINIX 3 setup script.  This script will guide you in setting up\n'> <'MINIX on your machine.  Please consult the manual for detailed instructions.\n'> <'\n'> 
          <'Note 1: If the screen blanks, hit CTRL+F3 to select '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'software scrolling'> 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'.\n'> <'Note 2: If things go wrong then hit CTRL+C to abort and start over.\n'> 
          <'Note 3: Default answers, like [y], can simply be chosen by hitting ENTER.\n'> <'Note 4: If you see a colon (:) then you should hit ENTER to continue.\n'> <':'>
        )
      }
    )
    (C {<read>} {<ret>})
    (C {<echo>} {(DQ )})
    (C {<echo>} {(DQ <' --- Step 1: Select keyboard type --------------------------------------'>)})
    (C {<echo>} {(DQ )})
    (C {<echo>} {(DQ <'What type of keyboard do you have?  You can choose one of:'>)})
    (C {<echo>} {(DQ )})
    (command.Pipeline
      children: [
        (C {<ls>} {<-C>} {<'/usr/lib/keymaps'>})
        (C {<sed>} {<-e>} {(SQ <'s/\\.map//g'>)} {<-e>} {(SQ <'s/^/    /'>)})
      ]
      negated: F
    )
    (C {<echo>} {(DQ )})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:step1)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [662]
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$step1'))} 
              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<ok>} {<Id.Lit_RBracket ']'>}
            )
          ]
        )
      body: 
        (command.DoGroup
          children: [
            (command.Sentence
              child: (C {<echo>} {<-n>} {(DQ <'Keyboard type? [us-std] '>)})
              terminator: <Id.Op_Semi _>
            )
            (C {<read>} {<keymap>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$keymap'))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:keymap)
                      op: assign_op.Equal
                      rhs: {<us-std>}
                      spids: [708]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          words: [
                            {<loadkeys>}
                            {(DQ <'/usr/lib/keymaps/'> ($ Id.VSub_DollarName '$keymap') <.map>)}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:step1)
                          op: assign_op.Equal
                          rhs: {<ok>}
                          spids: [729]
                        )
                      ]
                    )
                  ]
                  spids: [712 727]
                )
              ]
              else_action: [(C {<warn>} {(DQ <'invalid keyboard'>)})]
            )
          ]
        )
    )
    (C {<echo>} {(DQ )})
    (C {<echo>} {(DQ <' --- Step 2: Selecting full distribution -------------------------------'>)})
    (C {<echo>} {(DQ )})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:nobigsource)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [840]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:step3)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [848]
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$step3'))} 
              {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<ok>} {<Id.Lit_RBracket ']'>}
            )
          ]
        )
      body: 
        (command.DoGroup
          children: [
            (C {<echo>} {(DQ )})
            (C {<echo>} 
              {(DQ <' --- Step 3: Create or select a partition for MINIX 3 -------------------'>)}
            )
            (C {<echo>} {(DQ )})
            (C {<echo>} {(DQ <'Now you need to create a MINIX 3 partition on your hard disk.'>)})
            (C {<echo>} {(DQ <'You can also select one that\'s already there.'>)})
            (C {<echo>} {(DQ <' '>)})
            (C {<echo>} {(DQ <'If you have an existing installation, reinstalling will let you'>)})
            (C {<echo>} {(DQ <'keep your current partitioning and subpartitioning, and overwrite'>)})
            (C {<echo>} {(DQ <'everything except your s1 subpartition (/home). If you want to'>)})
            (C {<echo>} {(DQ <'reinstall, select your existing minix partition.'>)})
            (C {<echo>} {(DQ <' '>)})
            (C {<echo>} {(DQ <'Unless you are an expert, you are advised to use the automated'>)})
            (C {<echo>} {(DQ <'step-by-step help in setting up.'>)})
            (C {<echo>} {(DQ )})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ok)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [966]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$ok'))} {<Id.Lit_Equals '='>} {(DQ )} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} {<-n>} {(DQ <'Press ENTER for automatic mode, or type \'expert\': '>)})
                    (C {<read>} {<mode>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {<-z>} 
                                      {(DQ ($ Id.VSub_DollarName '$mode'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:auto)
                                      op: assign_op.Equal
                                      rhs: {(DQ <1>)}
                                      spids: [1019]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:ok)
                                      op: assign_op.Equal
                                      rhs: {(DQ <yes>)}
                                      spids: [1025]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [1004 1017]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$mode'))} 
                                      {<Id.Lit_Equals '='>} {<expert>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:auto)
                                      op: assign_op.Equal
                                      rhs: {(DQ )}
                                      spids: [1052]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:ok)
                                      op: assign_op.Equal
                                      rhs: {(DQ <yes>)}
                                      spids: [1057]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [1035 1050]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$ok'))} 
                                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: (C {<warn>} {(DQ <'try again'>)})
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [1066 1082]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:primary)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [1099]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$auto'))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {<-n>} 
                      {
                        (DQ <'\n'> <'MINIX needs one primary partition of '> 
                          ($ Id.VSub_DollarName '$TOTALMB') <' MB for a full install,\n'> <'plus what you want for /home.\n'> <'\n'> 
                          <
'If there is no free space on your disk then you have to choose an option:\n'
                          > <'   (1) Delete one or more partitions\n'> <'   (2) Allocate an existing partition to MINIX 3\n'> 
                          <'   (3) Exit setup and shrink a partition using a different OS\n'> <'\n'> <'To make this partition you will be put in the editor '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\"'>
                          ) <part> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <'.  Follow the\n'> 
                          <
'advice under the \'!\' key to make a new partition of type MINIX.  Do not\n'
                          > <'touch an existing partition unless you know precisely what you are doing!\n'> 
                          <
'Please note the name of the partition (e.g. c0d0p1, c0d1p3, c1d1p0) you\n'
                          > <'make.  (See the devices section in usage(8) on MINIX device names.)\n'> <':'>
                        )
                      }
                    )
                    (C {<read>} {<ret>})
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$primary'))} 
                              {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<part>})
                                (command.ControlFlow
                                  token: <Id.ControlFlow_Exit exit>
                                )
                              ]
                            )
                            (C {<echo>} {<-n>} 
                              {
                                (DQ <'\n'> 
                                  <
'Please finish the name of the primary partition you have created:\n'
                                  > <'(Just type ENTER if you want to rerun '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) 
                                  <part> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <')                   /dev/'>
                                )
                              }
                            )
                            (C {<read>} {<primary>})
                          ]
                        )
                    )
                    (C {<echo>} {(DQ )})
                    (C {<echo>} 
                      {(DQ <'This is the point of no return.  You have selected to install MINIX'>)}
                    )
                    (C {<echo>} 
                      {
                        (DQ <'on partition /dev/'> ($ Id.VSub_DollarName '$primary') 
                          <'.  Please confirm that you want to use this'>
                        )
                      }
                    )
                    (C {<echo>} {(DQ <'selection to install MINIX.'>)})
                    (C {<echo>} {(DQ )})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:confirmation)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [1240]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-b>} 
                                  {(DQ <'/dev/'> ($ Id.VSub_DollarName '$primary'))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'/dev/'> ($ Id.VSub_DollarName '$primary') 
                                  <' is not a block device.'>
                                )
                              }
                            )
                          ]
                          spids: [1246 1262]
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {<-z>} 
                              {(DQ ($ Id.VSub_DollarName '$confirmation'))} {<-o>} {(DQ ($ Id.VSub_DollarName '$confirmation'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<yes>} {<-a>} 
                              {(DQ ($ Id.VSub_DollarName '$confirmation'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<no>} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<echo>} {<-n>} 
                              {
                                (DQ 
                                  <
'Are you sure you want to continue? Please enter \'yes\' or \'no\': '
                                  >
                                )
                              }
                            )
                            (C {<read>} {<confirmation>})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Sentence
                                          child: 
                                            (C {<Id.Lit_LBracket '['>} 
                                              {(DQ ($ Id.VSub_DollarName '$confirmation'))} {<Id.Lit_Equals '='>} {<yes>} {<Id.Lit_RBracket ']'>}
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  action: [
                                    (command.Sentence
                                      child: 
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:step3)
                                              op: assign_op.Equal
                                              rhs: {<ok>}
                                              spids: [1346]
                                            )
                                          ]
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                  spids: [1329 1344]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:biosdrivename)
                          op: assign_op.Equal
                          rhs: {(DQ <'Actual BIOS device name unknown, due to expert mode.'>)}
                          spids: [1356]
                        )
                      ]
                    )
                  ]
                  spids: [1103 1116]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$auto'))} 
                              {<Id.Lit_Equals '='>} {(DQ <1>)} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:PF)
                              op: assign_op.Equal
                              rhs: {(DQ <'/tmp/pf'>)}
                              spids: [1389]
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<autopart>} {<-m> ($ Id.VSub_DollarName '$TOTALMB')} 
                                      {<-f> ($ Id.VSub_DollarName '$PF')}
                                    )
                                  ]
                                )
                              action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (C {<Id.Lit_LBracket '['>} {<-s>} 
                                              {(DQ ($ Id.VSub_DollarName '$PF'))} {<Id.Lit_RBracket ']'>}
                                            )
                                          ]
                                        )
                                      action: [
                                        (C {<set>} 
                                          {
                                            (command_sub
                                              left_token: <Id.Left_Backtick '`'>
                                              child: (C {<cat>} {($ Id.VSub_DollarName '$PF')})
                                            )
                                          }
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:bd)
                                              op: assign_op.Equal
                                              rhs: {(DQ ($ Id.VSub_Number '$1'))}
                                              spids: [1435]
                                            )
                                          ]
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:bdn)
                                              op: assign_op.Equal
                                              rhs: {(DQ ($ Id.VSub_Number '$2'))}
                                              spids: [1441]
                                            )
                                          ]
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:biosdrivename)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ <'Probably, the right command is '> 
                                                    (word_part.EscapedLiteral
                                                      token: <Id.Lit_EscapedChar '\\"'>
                                                    ) <'boot '> ($ Id.VSub_DollarName '$bdn') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <.>
                                                  )
                                                }
                                              spids: [1447]
                                            )
                                          ]
                                        )
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (C {<Id.Lit_LBracket '['>} {<-b>} 
                                                      {(DQ <'/dev/'> ($ Id.VSub_DollarName '$bd'))} {<Id.Lit_RBracket ']'>}
                                                    )
                                                  ]
                                                )
                                              action: [
                                                (command.ShAssignment
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (sh_lhs_expr.Name name:primary)
                                                      op: assign_op.Equal
                                                      rhs: {(DQ ($ Id.VSub_DollarName '$bd'))}
                                                      spids: [1474]
                                                    )
                                                  ]
                                                )
                                              ]
                                              spids: [1458 1472]
                                            )
                                          ]
                                          else_action: [
                                            (C {<echo>} 
                                              {
                                                (DQ <'Funny device '> ($ Id.VSub_DollarName '$bd') 
                                                  <' from autopart.'>
                                                )
                                              }
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [1408 1421]
                                    )
                                  ]
                                  else_action: [
                                    (C {<echo>} {(DQ <'Didn\'t find output from autopart.'>)})
                                  ]
                                )
                              ]
                              spids: [1395 1406]
                            )
                          ]
                          else_action: [(C {<echo>} {(DQ <'Autopart tool failed. Trying again.'>)})]
                        )
                        (C {<atnormalize>})
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Sentence
                                      child: 
                                        (C {<Id.Lit_LBracket '['>} {<-n>} 
                                          {(DQ ($ Id.VSub_DollarName '$primary'))} {<Id.Lit_RBracket ']'>}
                                        )
                                      terminator: <Id.Op_Semi _>
                                    )
                                  ]
                                )
                              action: [
                                (command.Sentence
                                  child: 
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:step3)
                                          op: assign_op.Equal
                                          rhs: {<ok>}
                                          spids: [1548]
                                        )
                                      ]
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                              spids: [1533 1546]
                            )
                          ]
                        )
                      ]
                      spids: [1365 1382]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-b>} 
                          {(DQ <'/dev/'> ($ Id.VSub_DollarName '$primary'))} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} {<Doing>} {<step>} {<3>} {<again.>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:step3)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                          spids: [1591]
                        )
                      ]
                    )
                  ]
                  spids: [1562 1578]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:devsize)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_Backtick '`'>
                              child: (C {<devsize>} {<'/dev/'> ($ Id.VSub_DollarName '$primary')})
                            )
                          )
                        }
                      spids: [1599]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$devsize'))} {<-lt>} 
                              {<1>} {<Id.Lit_RBracket ']'>}
                            )
                          ]
                        )
                      action: [
                        (C {<echo>} 
                          {(DQ <'/dev/'> ($ Id.VSub_DollarName '$primary') <' is a 0-sized device.'>)}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:step3)
                              op: assign_op.Equal
                              rhs: {(DQ )}
                              spids: [1639]
                            )
                          ]
                        )
                      ]
                      spids: [1613 1628]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:root)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name primary) <s0>}
          spids: [1658]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:home)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name primary) <s1>}
          spids: [1664]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:usr)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name primary) <s2>}
          spids: [1670]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<umount>} {<'/dev/'> ($ Id.VSub_DollarName '$root')}]
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (C {<echo>} {(DQ <'Unmounted '> ($ Id.VSub_DollarName '$root') <' for you.'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<umount>} {<'/dev/'> ($ Id.VSub_DollarName '$home')}]
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (C {<echo>} {(DQ <'Unmounted '> ($ Id.VSub_DollarName '$home') <' for you.'>)})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<umount>} {<'/dev/'> ($ Id.VSub_DollarName '$usr')}]
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (C {<echo>} {(DQ <'Unmounted '> ($ Id.VSub_DollarName '$usr') <' for you.'>)})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:devsizemb)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (C {<expr>} {($ Id.VSub_DollarName '$devsize')} {<'/'>} {<1024>} {<'/'>} {<2>})
                )
              )
            }
          spids: [1731]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:maxhome)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (C {<expr>} {($ Id.VSub_DollarName '$devsizemb')} {<->} 
                      {($ Id.VSub_DollarName '$TOTALMB')} {<->} {<1>}
                    )
                )
              )
            }
          spids: [1750]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$devsizemb'))} {<-lt>} 
                  {(DQ ($ Id.VSub_DollarName '$TOTALMB'))} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (C {<echo>} 
              {
                (DQ <'The selected partition ('> ($ Id.VSub_DollarName '$devsizemb') 
                  <' MB) is too small.'>
                )
              }
            )
            (C {<echo>} {(DQ <'You\'ll need '> ($ Id.VSub_DollarName '$TOTALMB') <' MB at least.'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [1770 1786]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$maxhome'))} {<-lt>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Note: you can\'t have /home with that size partition.'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:maxhome)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [1836]
                )
              ]
            )
          ]
          spids: [1813 1827]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TMPMP)
          op: assign_op.Equal
          rhs: {<'/m'>}
          spids: [1842]
        )
      ]
    )
    (command.Simple
      words: [{<mkdir>} {($ Id.VSub_DollarName '$TMPMP')}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})
        (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:confirm)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [1856]
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$confirm'))} {<Id.Lit_Equals '='>} {(DQ )} 
              {<Id.Lit_RBracket ']'>}
            )
          ]
        )
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:auto)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                  spids: [1879]
                )
              ]
            )
            (C {<echo>} {(DQ )})
            (C {<echo>} 
              {(DQ <' --- Step 4: Reinstall choice ------------------------------------------'>)}
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          words: [
                            {<mount>}
                            {<-r>}
                            {<'/dev/'> ($ Id.VSub_DollarName '$home')}
                            {($ Id.VSub_DollarName '$TMPMP')}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<umount>} {<'/dev/'> ($ Id.VSub_DollarName '$home')}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      do_fork: T
                    )
                    (C {<echo>} {(DQ )})
                    (C {<echo>} {(DQ <'You have selected an existing MINIX 3 partition.'>)})
                    (C {<echo>} {(DQ <'Type F for full installation (to overwrite entire partition)'>)})
                    (C {<echo>} 
                      {(DQ <'Type R for a reinstallation (existing /home will not be affected)'>)}
                    )
                    (C {<echo>} {(DQ )})
                    (C {<echo>} {<-n>} {(DQ <'(F)ull or (R)einstall? [R] '>)})
                    (C {<read>} {<conf>})
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$conf'))}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ )}]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:confirm)
                                      op: assign_op.Equal
                                      rhs: {(DQ <ok>)}
                                      spids: [1988]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:auto)
                                      op: assign_op.Equal
                                      rhs: {(DQ <r>)}
                                      spids: [1994]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [1984 1986 2000 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Rr> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}
                          ]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:confirm)
                                      op: assign_op.Equal
                                      rhs: {(DQ <ok>)}
                                      spids: [2009]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:auto)
                                      op: assign_op.Equal
                                      rhs: {(DQ <r>)}
                                      spids: [2015]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [2003 2007 2021 -1]
                        )
                        (case_arm
                          pat_list: [
                            {<Id.Lit_LBracket '['> <Ff> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}
                          ]
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:confirm)
                                      op: assign_op.Equal
                                      rhs: {(DQ <ok>)}
                                      spids: [2030]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:auto)
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                  spids: [2036]
                                )
                              ]
                            )
                          ]
                          spids: [2024 2028 2040 -1]
                        )
                      ]
                    )
                  ]
                  spids: [1896 1914]
                )
              ]
              else_action: [
                (C {<echo>} {(DQ )})
                (C {<echo>} {(DQ <'No old /home found. Doing full install.'>)})
                (C {<echo>} {(DQ )})
                (command.Sentence
                  child: 
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:confirm)
                          op: assign_op.Equal
                          rhs: {(DQ <ok>)}
                          spids: [2068]
                        )
                      ]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          ]
        )
    )
    (C {<rmdir>} {($ Id.VSub_DollarName '$TMPMP')})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:nohome)
          op: assign_op.Equal
          rhs: {(DQ <0>)}
          spids: [2086]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:homesize)
          op: assign_op.Equal
          rhs: {(DQ )}
          spids: [2092]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName '$auto'))} 
                  {<Id.Lit_Equals '='>} {<r>} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ )})
            (C {<echo>} 
              {(DQ <' --- Step 5: Select the size of /home ----------------------------------'>)}
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$homesize'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:defmb)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: (C {<expr>} {($ Id.VSub_DollarName '$maxhome')} {<'/'>} {<5>})
                                )
                              )
                            }
                          spids: [2152]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$defmb'))} 
                                  {<-gt>} {(DQ ($ Id.VSub_DollarName '$maxhome'))} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:defmb)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$maxhome')}
                                  spids: [2188]
                                )
                              ]
                            )
                          ]
                          spids: [2168 2185]
                        )
                      ]
                    )
                    (C {<echo>} {(DQ )})
                    (C {<echo>} 
                      {
                        (DQ <'MINIX will take up '> ($ Id.VSub_DollarName '$TOTALMB') 
                          <' MB, without /home.'>
                        )
                      }
                    )
                    (C {<echo>} {<-n>} 
                      {
                        (DQ <'How big do you want your /home to be in MB (0-'> 
                          ($ Id.VSub_DollarName '$maxhome') <') ? ['> ($ Id.VSub_DollarName '$defmb') <'] '>
                        )
                      }
                    )
                    (C {<read>} {<homesize>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$homesize'))} 
                                      {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (command.Sentence
                              child: 
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:homesize)
                                      op: assign_op.Equal
                                      rhs: {($ Id.VSub_DollarName '$defmb')}
                                      spids: [2248]
                                    )
                                  ]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          spids: [2229 2246]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$homesize'))} 
                                  {<-lt>} {<1>} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:nohome)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                  spids: [2272]
                                )
                              ]
                            )
                            (C {<echo>} {(DQ <'Ok, not making a /home.'>)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:homesize)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                  spids: [2283]
                                )
                              ]
                            )
                          ]
                          spids: [2255 2270]
                        )
                      ]
                      else_action: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$homesize'))} 
                                      {<-gt>} {(DQ ($ Id.VSub_DollarName '$maxhome'))} {<Id.Lit_RBracket ']'>}
                                    )
                                  ]
                                )
                              action: [
                                (C {<echo>} {(DQ <'That won\'t fit!'>)})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:homesize)
                                      op: assign_op.Equal
                                      rhs: {(DQ )}
                                      spids: [2316]
                                    )
                                  ]
                                )
                              ]
                              spids: [2290 2307]
                            )
                          ]
                          else_action: [
                            (C {<echo>} {(DQ )})
                            (C {<echo>} {<-n>} {(DQ ($ Id.VSub_DollarName '$homesize') <' MB Ok? [Y] '>)})
                            (C {<read>} {<ok>})
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$ok'))} 
                                  {<Id.Lit_Equals '='>} {<Y>} {<-o>} {(DQ ($ Id.VSub_DollarName '$ok'))} {<Id.Lit_Equals '='>} {<y>} {<-o>} 
                                  {(DQ ($ Id.VSub_DollarName '$ok'))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:homesize)
                                      op: assign_op.Equal
                                      rhs: {(DQ )}
                                      spids: [2380]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                    (C {<echo>} {(DQ )})
                  ]
                )
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:homemb)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$homesize') <' MB'>)}
                  spids: [2404]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:homesize)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (C {<expr>} {($ Id.VSub_DollarName '$homesize')} {(SQ <'*'>)} {<1024>} 
                              {(SQ <'*'>)} {<2>}
                            )
                        )
                      )
                    }
                  spids: [2411]
                )
              ]
            )
          ]
          spids: [2096 2112]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:homepart)
              op: assign_op.Equal
              rhs: 
                {
                  (DQ 
                    (command_sub
                      left_token: <Id.Left_Backtick '`'>
                      child: (C {<devsize>} {<'/dev/'> ($ Id.VSub_DollarName '$home')})
                    )
                  )
                }
              spids: [2437]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:homesize)
              op: assign_op.Equal
              rhs: 
                {
                  (DQ 
                    (command_sub
                      left_token: <Id.Left_Backtick '`'>
                      child: 
                        (C {<expr>} {($ Id.VSub_DollarName '$homepart')} {<'/'>} {<2>} {<'/'>} {<1024>})
                    )
                  )
                }
              spids: [2450]
            )
          ]
        )
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$homesize'))} {<-gt>} 
                      {(DQ ($ Id.VSub_DollarName '$maxhome'))} {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              action: [
                (C {<echo>} 
                  {
                    (DQ <'Sorry, but your /home is too big ('> ($ Id.VSub_DollarName '$homesize') 
                      <' MB) to leave enough'>
                    )
                  }
                )
                (C {<echo>} 
                  {
                    (DQ <'space on the rest of the partition ('> ($ Id.VSub_DollarName '$devsizemb') 
                      <' MB) for your'>
                    )
                  }
                )
                (C {<echo>} 
                  {(DQ <'selected installation size ('> ($ Id.VSub_DollarName '$TOTALMB') <' MB).'>)}
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              spids: [2470 2487]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:homesize)
              op: assign_op.Equal
              rhs: {<exist>}
              spids: [2529]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:homemb)
              op: assign_op.Equal
              rhs: {(DQ <'current size'>)}
              spids: [2533]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:minblocksize)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [2541]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:maxblocksize)
          op: assign_op.Equal
          rhs: {<64>}
          spids: [2544]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:blockdefault)
          op: assign_op.Equal
          rhs: {<4>}
          spids: [2547]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName '$auto'))} 
                  {<Id.Lit_Equals '='>} {(DQ <r>)} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ )})
            (C {<echo>} 
              {(DQ <' --- Step 6: Select a block size ---------------------------------------'>)}
            )
            (C {<echo>} {(DQ )})
            (C {<echo>} 
              {
                (DQ <'The default file system block size is '> ($ Id.VSub_DollarName '$blockdefault') 
                  <' kB.'>
                )
              }
            )
            (C {<echo>} {(DQ )})
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$blocksize'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.Sentence
                      child: 
                        (C {<echo>} {<-n>} 
                          {
                            (DQ <'Block size in kilobytes? ['> ($ Id.VSub_DollarName '$blockdefault') 
                              <'] '>
                            )
                          }
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<read>} {<blocksize>})
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$blocksize'))})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:blocksize)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName '$blockdefault')}
                              spids: [2652]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$blocksize'))} 
                                  {<-lt>} {($ Id.VSub_DollarName '$minblocksize')} {<-o>} {(DQ ($ Id.VSub_DollarName '$blocksize'))} {<-gt>} 
                                  {($ Id.VSub_DollarName '$maxblocksize')} {<Id.Lit_RBracket ']'>}
                                )
                              ]
                            )
                          action: [
                            (C {<warn>} 
                              {
                                (DQ <'At least '> ($ Id.VSub_DollarName '$minblocksize') 
                                  <' kB and at most '> ($ Id.VSub_DollarName '$maxblocksize') <' kB please.'>
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:blocksize)
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                  spids: [2696]
                                )
                              ]
                            )
                          ]
                          spids: [2656 2681]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
          spids: [2551 2569]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:blocksize)
              op: assign_op.Equal
              rhs: {($ Id.VSub_DollarName '$blockdefault')}
              spids: [2709]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:blocksizebytes)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: (C {<expr>} {($ Id.VSub_DollarName '$blocksize')} {(SQ <'*'>)} {<1024>})
                )
              )
            }
          spids: [2715]
        )
      ]
    )
    (C {<echo>} 
      {
        (DQ <'\n'> <'You have selected to (re)install MINIX 3 in the partition /dev/'> 
          ($ Id.VSub_DollarName '$primary') <'.\n'> <'The following subpartitions are now being created on /dev/'> 
          ($ Id.VSub_DollarName '$primary') <':\n'> <'\n'> <'    Root subpartition:\t/dev/'> ($ Id.VSub_DollarName '$root') <'\t'> 
          ($ Id.VSub_DollarName '$ROOTMB') <' MB\n'> <'    /home subpartition:\t/dev/'> ($ Id.VSub_DollarName '$home') <'\t'> 
          ($ Id.VSub_DollarName '$homemb') <'\n'> <'    /usr subpartition:\t/dev/'> ($ Id.VSub_DollarName '$usr') <'\trest of '> 
          ($ Id.VSub_DollarName '$primary') <'\n'>
        )
      }
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [
            {<installboot>}
            {<-m>}
            {<'/dev/'> ($ Id.VSub_DollarName '$primary')}
            {<'/usr/mdec/masterboot'>}
          ]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [
            {<partition>}
            {<'/dev/'> ($ Id.VSub_DollarName '$primary')}
            {<1>}
            {<81> <Id.Lit_Colon ':'> (${ Id.VSub_Name ROOTSECTS) <Id.Lit_Star '*'>}
            {<81> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$homesize')}
            {<81> <Id.Lit_Colon ':'> <0> <Id.Lit_Other '+'>}
          ]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (C {<echo>} {(DQ <'Creating /dev/'> ($ Id.VSub_DollarName '$root') <' for / ..'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<mkfs>} {<'/dev/'> ($ Id.VSub_DollarName '$root')})
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$nohome'))} {<Id.Lit_Equals '='>} 
                  {<0>} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} 
                          {(DQ ($ Id.VSub_DollarName '$auto'))} {<Id.Lit_Equals '='>} {<r>} {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  action: [
                    (C {<echo>} 
                      {(DQ <'Creating /dev/'> ($ Id.VSub_DollarName '$home') <' for /home ..'>)}
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<mkfs>} {<-B>} {($ Id.VSub_DollarName '$blocksizebytes')} 
                          {<'/dev/'> ($ Id.VSub_DollarName '$home')}
                        )
                        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
                      ]
                    )
                  ]
                  spids: [2852 2869]
                )
              ]
            )
          ]
          spids: [2835 2849]
        )
      ]
      else_action: [(C {<echo>} {(DQ <'Skipping /home'>)})]
    )
    (C {<echo>} {(DQ <'Creating /dev/'> ($ Id.VSub_DollarName '$usr') <' for /usr ..'>)})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<mkfs>} {<-B>} {($ Id.VSub_DollarName '$blocksizebytes')} 
          {<'/dev/'> ($ Id.VSub_DollarName '$usr')}
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$nohome'))} {<Id.Lit_Equals '='>} 
                  {<0>} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fshome)
                  op: assign_op.Equal
                  rhs: {(DQ <'home=/dev/'> ($ Id.VSub_DollarName '$home'))}
                  spids: [2946]
                )
              ]
            )
          ]
          spids: [2929 2943]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fshome)
              op: assign_op.Equal
              rhs: {(DQ )}
              spids: [2954]
            )
          ]
        )
      ]
    )
    (C {<echo>} {(DQ )})
    (C {<echo>} {(DQ <' --- Step 7: Wait for files to be copied -------------------------------'>)})
    (C {<echo>} {(DQ )})
    (C {<echo>} {(DQ <'All files will now be copied to your hard disk. This may take a while.'>)})
    (C {<echo>} {(DQ )})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<mount>} {<'/dev/'> ($ Id.VSub_DollarName '$usr')} {<'/mnt'>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<cd>} {<'/usr'>})
                        (command.ControlFlow
                          token: <Id.ControlFlow_Exit exit>
                          arg_word: {<1>}
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:list)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Pipeline
                                      children: [(C {<ls>}) (C {<fgrep>} {<-v>} {<install>})]
                                      negated: F
                                    )
                                )
                              )
                            }
                          spids: [3019]
                        )
                      ]
                    )
                    (command.ForEach
                      iter_names: [d]
                      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName '$list')}])
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<cpdir>} {<-v>} {($ Id.VSub_DollarName '$d')} 
                              {<'/mnt/'> ($ Id.VSub_DollarName '$d')}
                            )
                          ]
                        )
                    )
                  ]
                )
            )
            (C {<progressbar>} {(DQ ($ Id.VSub_DollarName '$USRFILES'))})
          ]
          negated: F
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<umount>} {<'/dev/'> ($ Id.VSub_DollarName '$usr')}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<mount>} {<'/dev/'> ($ Id.VSub_DollarName '$root')} {<'/mnt'>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (C {<cpdir>} {<-vx>} {<'/'>} {<'/mnt'>})
            (C {<progressbar>} {(DQ ($ Id.VSub_DollarName '$ROOTFILES'))})
          ]
          negated: F
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (C {<cp>} {<'/mnt/etc/motd.install'>} {<'/mnt/etc/motd'>})
    (C {<rm>} {<'/mnt/var/log'>})
    (C {<ln>} {<-s>} {<'/usr/log'>} {<'/mnt/var/log'>})
    (command.Simple
      words: [{<rm>} {<'/mnt/etc/issue'>} {<'/mnt/CD'>} {<'/mnt/.'> <Id.Lit_Star '*'>}]
      redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [
        {<echo>}
        {
          (DQ <'# Poor man\'s File System Table.\n'> <'\n'> <'root=/dev/'> 
            ($ Id.VSub_DollarName '$root') <'\n'> <'usr=/dev/'> ($ Id.VSub_DollarName '$usr') <'\n'> ($ Id.VSub_DollarName '$fshome')
          )
        }
      ]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/mnt/etc/fstab'>})]
      do_fork: T
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$keymap'))})
        (C {<cp>} {<-p>} {(DQ <'/usr/lib/keymaps/'> ($ Id.VSub_DollarName '$keymap') <.map>)} 
          {<'/mnt/etc/keymap'>}
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<umount>} {<'/dev/'> ($ Id.VSub_DollarName '$root')}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<mount>} {<'/dev/'> ($ Id.VSub_DollarName '$usr')} {<'/mnt'>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [
            {<installboot>}
            {<-d>}
            {<'/dev/'> ($ Id.VSub_DollarName '$root')}
            {<'/usr/mdec/bootblock'>}
            {<'/boot/boot'>}
          ]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<edparams>} {<'/dev/'> ($ Id.VSub_DollarName '$root')} 
          {
            (DQ <'rootdev='> ($ Id.VSub_DollarName '$root') <'; ramimagedev='> 
              ($ Id.VSub_DollarName '$root') 
              <
'; minix(1,Start MINIX 3) { image=/boot/image_big; boot; }; newminix(2,Start Custom MINIX 3) { unset image; boot }; main() { echo By default, MINIX 3 will automatically load in 3 seconds.; echo Press ESC to enter the monitor for special configuration.; trap 3000 boot; menu; }; save'
              >
            )
          }
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pfile)
          op: assign_op.Equal
          rhs: {(DQ <'/mnt/src/tools/fdbootparams'>)}
          spids: [3287]
        )
      ]
    )
    (command.Simple
      words: [
        {<echo>}
        {
          (DQ <'rootdev='> ($ Id.VSub_DollarName '$root') <'; ramimagedev='> 
            ($ Id.VSub_DollarName '$root') <'; save'>
          )
        }
      ]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$pfile')}
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cddrive)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<mount>})
                        (C {<grep>} {<usr>})
                        (C {<awk>} {(SQ <'{ print $1 }'>)})
                        (C {<sed>} {(SQ <'s/p.*//'>)})
                      ]
                      negated: F
                    )
                )
              )
            }
          spids: [3308]
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {(DQ <'cddrive='> ($ Id.VSub_DollarName '$cddrive'))}]
      redirects: [
        (redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<'/mnt/etc/rc.package'>})
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:bios)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_Backtick '`'>
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<echo>} {($ Id.VSub_DollarName '$primary')})
                        (C {<sed>} {<-e>} {(SQ <'s/d./dX/g'>)} {<-e>} {(SQ <'s/c.//g'>)})
                      ]
                      negated: F
                    )
                )
              )
            }
          spids: [3351]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {(DQ ($ Id.VSub_DollarName '$auto'))} 
                  {<Id.Lit_Equals '='>} {(DQ <r>)} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          words: [{<mount>} {<'/dev/'> ($ Id.VSub_DollarName '$home')} {<'/home'>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                    )
                  action: [
                    (command.ForEach
                      iter_names: [u]
                      iterable: (for_iter.Words words:[{<bin>} {<ast>}])
                      body: 
                        (command.DoGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:h)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (C {<eval>} {<echo>} {(DQ <'~'> ($ Id.VSub_DollarName '$u'))})
                                      )
                                    }
                                  spids: [3427]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: 
                                    (condition.Shell
                                      commands: [(C {<mkdir>} {($ Id.VSub_DollarName '$h')})]
                                    )
                                  action: [
                                    (C {<echo>} 
                                      {
                                        (DQ <' * Creating home directory for '> 
                                          ($ Id.VSub_DollarName '$u') <' in '> ($ Id.VSub_DollarName '$h')
                                        )
                                      }
                                    )
                                    (C {<cpdir>} {<'/usr/ast'>} {($ Id.VSub_DollarName '$h')})
                                    (C {<chown>} {<-R>} 
                                      {($ Id.VSub_DollarName '$u') <Id.Lit_Colon ':'> <operator>} {($ Id.VSub_DollarName '$h')}
                                    )
                                  ]
                                  spids: [3442 3449]
                                )
                              ]
                              else_action: [
                                (C {<echo>} {(DQ <' * Couldn\'t create '> ($ Id.VSub_DollarName '$h'))})
                              ]
                            )
                          ]
                        )
                    )
                    (C {<umount>} {<'/dev/'> ($ Id.VSub_DollarName '$home')})
                  ]
                  spids: [3399 3412]
                )
              ]
            )
          ]
          spids: [3379 3397]
        )
      ]
    )
    (C {<echo>} {(DQ <'Saving random data..'>)})
    (C {<dd>} {<Id.Lit_VarLike 'if='> <'/dev/random'>} {<Id.Lit_VarLike 'of='> <'/mnt/adm/random.dat'>} 
      {<Id.Lit_VarLike 'bs='> <1024>} {<Id.Lit_VarLike 'count='> <1>}
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<umount>} {<'/dev/'> ($ Id.VSub_DollarName '$usr')}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (C {<echo>} {(DQ )})
    (C {<echo>} {(DQ <' --- Step 8: Select your Ethernet chip ---------------------------------'>)})
    (C {<echo>} {(DQ )})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<mount>} {<'/dev/'> ($ Id.VSub_DollarName '$root')} {<'/mnt'>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{<mount>} {<'/dev/'> ($ Id.VSub_DollarName '$usr')} {<'/mnt/usr'>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<'/bin/netconf'>} {<-p>} {<'/mnt'>})
        (C {<echo>} {<FAILED>} {<TO>} {<CONFIGURE>} {<NETWORK>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<umount>} {<'/dev/'> ($ Id.VSub_DollarName '$usr')})
        (C {<echo>} {<Unmounted>} {($ Id.VSub_DollarName '$usr')})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<umount>} {<'/dev/'> ($ Id.VSub_DollarName '$root')})
        (C {<echo>} {<Unmounted>} {($ Id.VSub_DollarName '$root')})
      ]
    )
    (C {<echo>} 
      {
        (DQ <'\n'> <'Please type \'shutdown\' to exit MINIX 3 and enter the boot monitor. At\n'> 
          <'the boot monitor prompt, type \'boot '> ($ Id.VSub_DollarName '$bios') <'\', where X is the bios drive\n'> 
          <'number of the drive you installed on, to try your new MINIX system.\n'> ($ Id.VSub_DollarName '$biosdrivename') <'\n'> <'\n'> 
          <'This ends the MINIX 3 setup script.  After booting your newly set up system,\n'> <'you can run the test suites as indicated in the setup manual.  You also \n'> 
          <'may want to take care of local configuration, such as securing your system\n'> <'with a password.  Please consult the usage manual for more information. \n'> <'\n'>
        )
      }
    )
  ]
)