(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<3>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'Usage: '> ($ Id.VSub_Number '$0') 
                    <' [-b] image-label image-name base-bits-dir [extra-bits-dir]'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/stderr'>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [72 85]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_Number '$1'))}
      arms: [
        (case_arm
          pat_list: [{<-b>}]
          action: [
            (command.Sentence
              child: 
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:BOPT)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number '$1'))}
                      spids: [119]
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
            (C {<shift>})
          ]
          spids: [116 117 127 -1]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:LABEL)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))})
                              (C {<tr>} {(SQ <'[:lower:]'>)} {(SQ <'[:upper:]'>)})
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [131]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<shift>})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NAME)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [157]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<shift>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BASEBITSDIR)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$1'))}
          spids: [165]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:publisher)
          op: assign_op.Equal
          rhs: {(DQ <'The FreeBSD Project.  http://www.FreeBSD.org/'>)}
          spids: [174]
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {(DQ <'/dev/iso9660/'> ($ Id.VSub_DollarName '$LABEL') <' / cd9660 ro 0 0'>)}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(DQ ($ Id.VSub_DollarName '$BASEBITSDIR') <'/etc/fstab'>)}
        )
      ]
      do_fork: T
    )
    (C {<makefs>} {<-t>} {<cd9660>} {<-o>} {<rockridge>} {<-o>} 
      {<Id.Lit_VarLike 'label='> (DQ ($ Id.VSub_DollarName '$LABEL'))} {<-o>} {<Id.Lit_VarLike 'publisher='> (DQ ($ Id.VSub_DollarName '$publisher'))} 
      {(DQ ($ Id.VSub_DollarName '$NAME') <.tmp>)} {(DQ ($ Id.VSub_At '$@'))}
    )
    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$BASEBITSDIR') <'/etc/fstab'>)})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ <x> ($ Id.VSub_DollarName '$BOPT'))} 
                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <x-b>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<mv>} {(DQ ($ Id.VSub_DollarName '$NAME') <.tmp>)} {(DQ ($ Id.VSub_DollarName '$NAME'))})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [237 256]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:TMPIMGDIR)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: (C {<mktemp>} {<-d>} {<'/tmp/bootfs.XXXXXXXX'>})
                  )
                }
              spids: [278]
            )
          ]
        )
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BOOTFSDIR)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$TMPIMGDIR') <'/bootfs'>)}
          spids: [295]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BOOTFSIMG)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$TMPIMGDIR') <'/bootfs.img'>)}
          spids: [301]
        )
      ]
    )
    (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$BOOTFSDIR') <'/boot'>)})
    (C {<cp>} {<-p>} {(DQ ($ Id.VSub_DollarName '$BASEBITSDIR') <'/boot/loader'>)} 
      {(DQ ($ Id.VSub_DollarName '$BOOTFSDIR') <'/boot'>)}
    )
    (C {<makefs>} {<-t>} {<ffs>} {<-B>} {<be>} {<-M>} {<512k>} {(DQ ($ Id.VSub_DollarName '$BOOTFSIMG'))} 
      {(DQ ($ Id.VSub_DollarName '$BOOTFSDIR'))}
    )
    (C {<dd>} {<Id.Lit_VarLike 'if='> (DQ ($ Id.VSub_DollarName '$BASEBITSDIR') <'/boot/boot1'>)} 
      {<Id.Lit_VarLike 'of='> (DQ ($ Id.VSub_DollarName '$BOOTFSIMG'))} {<Id.Lit_VarLike 'bs='> <512>} {<Id.Lit_VarLike 'conv='> <notrunc> <Id.Lit_Comma ','> <sync>}
    )
    (C {<Id.Lit_Colon ':'>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name CYLSIZE>
          suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonEquals ':='> arg_word:{<640>})
        )
      }
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ISOSIZE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<stat>} {<-f>} {<Id.Lit_Other '%'> <z>} {(DQ ($ Id.VSub_DollarName '$NAME') <.tmp>)})
              )
            }
          spids: [389]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ISOBLKS)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Slash
                    left: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Plus
                        left: {($ Id.VSub_DollarName '$ISOSIZE')}
                        right: {<Id.Lit_Digits 511>}
                      )
                    right: {<Id.Lit_Digits 512>}
                  )
              )
            }
          spids: [404]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ISOCYLS)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Slash
                    left: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Plus
                        left: {($ Id.VSub_DollarName '$ISOBLKS')}
                        right: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Minus
                            left: {($ Id.VSub_DollarName '$CYLSIZE')}
                            right: {<Id.Lit_Digits 1>}
                          )
                      )
                    right: {($ Id.VSub_DollarName '$CYLSIZE')}
                  )
              )
            }
          spids: [420]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BOOTFSSIZE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<stat>} {<-f>} {<Id.Lit_Other '%'> <z>} {(DQ ($ Id.VSub_DollarName '$BOOTFSIMG'))})
              )
            }
          spids: [443]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BOOTFSBLKS)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Slash
                    left: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Plus
                        left: {($ Id.VSub_DollarName '$BOOTFSSIZE')}
                        right: {<Id.Lit_Digits 511>}
                      )
                    right: {<Id.Lit_Digits 512>}
                  )
              )
            }
          spids: [457]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BOOTFSCYLS)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Slash
                    left: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Plus
                        left: {($ Id.VSub_DollarName '$BOOTFSBLKS')}
                        right: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Minus
                            left: {($ Id.VSub_DollarName '$CYLSIZE')}
                            right: {<Id.Lit_Digits 1>}
                          )
                      )
                    right: {($ Id.VSub_DollarName '$CYLSIZE')}
                  )
              )
            }
          spids: [473]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ENDCYL)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Plus
                    left: {($ Id.VSub_DollarName '$ISOCYLS')}
                    right: {($ Id.VSub_DollarName '$BOOTFSCYLS')}
                  )
              )
            }
          spids: [496]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NSECTS)
          op: assign_op.Equal
          rhs: 
            {
              (word_part.ArithSub
                anode: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Star
                    left: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Star
                        left: {($ Id.VSub_DollarName '$ENDCYL')}
                        right: {<Id.Lit_Digits 1>}
                      )
                    right: {($ Id.VSub_DollarName '$CYLSIZE')}
                  )
              )
            }
          spids: [506]
        )
      ]
    )
    (C {<dd>} {<Id.Lit_VarLike 'if='> (DQ ($ Id.VSub_DollarName '$NAME') <.tmp>)} 
      {<Id.Lit_VarLike 'of='> (DQ ($ Id.VSub_DollarName '$NAME'))} {<Id.Lit_VarLike 'bs='> (DQ (${ Id.VSub_Name CYLSIZE) <b>)} 
      {<Id.Lit_VarLike 'conv='> <notrunc> <Id.Lit_Comma ','> <sync>}
    )
    (C {<dd>} {<Id.Lit_VarLike 'if='> (DQ ($ Id.VSub_DollarName '$BOOTFSIMG'))} 
      {<Id.Lit_VarLike 'of='> (DQ ($ Id.VSub_DollarName '$NAME'))} {<Id.Lit_VarLike 'bs='> (DQ (${ Id.VSub_Name CYLSIZE) <b>)} 
      {<Id.Lit_VarLike 'seek='> ($ Id.VSub_DollarName '$ISOCYLS')} {<Id.Lit_VarLike 'conv='> <notrunc> <Id.Lit_Comma ','> <sync>}
    )
    (C {<dd>} {<Id.Lit_VarLike 'if='> <'/dev/zero'>} 
      {<Id.Lit_VarLike 'of='> (DQ ($ Id.VSub_DollarName '$NAME'))} {<Id.Lit_VarLike 'bs='> (DQ (${ Id.VSub_Name CYLSIZE) <b>)} 
      {<Id.Lit_VarLike 'seek='> ($ Id.VSub_DollarName '$ENDCYL')} {<Id.Lit_VarLike 'count='> <2>} {<Id.Lit_VarLike 'conv='> <notrunc> <Id.Lit_Comma ','> <sync>}
    )
    (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName '$NAME') <.tmp>)} 
      {(DQ ($ Id.VSub_DollarName '$TMPIMGDIR'))}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MD)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (C {<mdconfig>} {<-a>} {<-t>} {<vnode>} {<-S>} {<512>} {<-y>} {<1>} {<-x>} 
                    {(DQ ($ Id.VSub_DollarName '$CYLSIZE'))} {<-f>} {(DQ ($ Id.VSub_DollarName '$NAME'))}
                  )
              )
            }
          spids: [624]
        )
      ]
    )
    (C {<gpart>} {<create>} {<-s>} {<VTOC8>} {($ Id.VSub_DollarName '$MD')})
    (C {<gpart>} {<add>} {<-i>} {<1>} {<-s>} 
      {
        (DQ 
          (word_part.ArithSub
            anode: 
              (arith_expr.Binary
                op_id: Id.Arith_Star
                left: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Star
                    left: {($ Id.VSub_DollarName '$ISOCYLS')}
                    right: {($ Id.VSub_DollarName '$CYLSIZE')}
                  )
                right: {<Id.Lit_Digits 512>}
              )
          ) <b>
        )
      } {<-t>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\!'>) <4>} {($ Id.VSub_DollarName '$MD')}
    )
    (C {<gpart>} {<add>} {<-i>} {<6>} {<-s>} 
      {
        (DQ 
          (word_part.ArithSub
            anode: 
              (arith_expr.Binary
                op_id: Id.Arith_Star
                left: 
                  (arith_expr.Binary
                    op_id: Id.Arith_Star
                    left: {($ Id.VSub_DollarName '$BOOTFSCYLS')}
                    right: {($ Id.VSub_DollarName '$CYLSIZE')}
                  )
                right: {<Id.Lit_Digits 512>}
              )
          ) <b>
        )
      } {<-t>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\!'>) <2>} {($ Id.VSub_DollarName '$MD')}
    )
    (C {<mdconfig>} {<-d>} {<-u>} 
      {
        (braced_var_sub
          token: <Id.VSub_Name MD>
          suffix_op: (suffix_op.Unary tok:<Id.VOp1_Pound '#'> arg_word:{<md>})
        )
      }
    )
  ]
)