(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (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: 
            (condition.Shell
              commands: [
                (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: 
            (condition.Shell
              commands: [
                (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 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.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 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.Simple
      words: [{<cat>} {<__tmp.bin>} {($ Id.VSub_DollarName '$BOOTMGR') <'/bootmgr.bin'>}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$BOOTMGR') <'/bootloader.bin'>}
        )
      ]
      do_fork: T
    )
    (C {<rm>} {<-f>} {<__tmp.bin>})
    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$BOOTMGR') <'/bootmgr.bin'>})
  ]
)