(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Pound '$#'))} {<-ne>} {<1>} 
                  {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(DQ <'Usage: bootgen.sh *build dir*'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [4 19]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BUILD)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [36]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:RELOCATOR)
          op: assign_op.Equal
          rhs: {<bootmgr/relocator>}
          spids: [43]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BOOTMGR)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name BUILD)}
          spids: [50]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                  {($ Id.VSub_DollarName '$RELOCATOR') </relocator.bin>} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(DQ <'Error : Relocator Not found!'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [59 73]
        )
      ]
      else_action: [(C {<echo>} {(DQ <'Relocator found...'>)})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-f>} 
                  {($ Id.VSub_DollarName '$BOOTMGR') </bootmgr.bin>} {<Id.Lit_RBracket ']'>}
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(DQ <'Error : Boot Manager Not found!'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [103 117]
        )
      ]
      else_action: [(C {<echo>} {(DQ <'Boot Manager found...'>)})]
    )
    (C {<echo>} {(DQ <'Generating bootloader...'>)})
    (command.Simple
      words: [
        {<dd>}
        {<Id.Lit_VarLike 'if='> </dev/zero>}
        {<Id.Lit_VarLike 'of='> <__tmp.bin>}
        {<Id.Lit_VarLike 'ibs='> <1>}
        {<Id.Lit_VarLike 'count='> <256>}
        {<Id.Lit_VarLike 'conv='> <notrunc>}
      ]
      redirects: [
        (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})
        (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
      ]
    )
    (command.Simple
      words: [
        {<dd>}
        {<Id.Lit_VarLike 'if='> ($ Id.VSub_DollarName '$RELOCATOR') </relocator.bin>}
        {<Id.Lit_VarLike 'of='> <__tmp.bin>}
        {<Id.Lit_VarLike 'ibs='> <1>}
        {<Id.Lit_VarLike 'conv='> <notrunc>}
      ]
      redirects: [
        (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{</dev/null>})
        (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
      ]
    )
    (command.Simple
      words: [{<cat>} {<__tmp.bin>} {($ Id.VSub_DollarName '$BOOTMGR') </bootmgr.bin>}]
      redirects: [
        (redir.Redir
          op: <Id.Redir_Great '>'>
          fd: -1
          arg_word: {($ Id.VSub_DollarName '$BOOTMGR') </bootloader.bin>}
        )
      ]
    )
    (C {<rm>} {<-f>} {<__tmp.bin>})
    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$BOOTMGR') </bootmgr.bin>})
  ]
)