(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FAT_SIZE)
          op: assign_op.Equal
          rhs: {<1600>}
          spids: [33]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BOOT1_SIZE)
          op: assign_op.Equal
          rhs: {<128k>}
          spids: [40]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number '$2'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Usage: '> ($ Id.VSub_Number '$0') <' arch boot-filename'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [65 78]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ARCH)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [97]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:FILENAME)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$2')}
          spids: [100]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OUTPUT_FILE)
          op: assign_op.Equal
          rhs: {<fat-> (${ Id.VSub_Name ARCH) <.tmpl>}
          spids: [107]
        )
      ]
    )
    (C {<dd>} {<Id.Lit_VarLike 'if='> <'/dev/zero'>} 
      {<Id.Lit_VarLike 'of='> ($ Id.VSub_DollarName '$OUTPUT_FILE')} {<Id.Lit_VarLike 'bs='> <512>} {<Id.Lit_VarLike 'count='> ($ Id.VSub_DollarName '$FAT_SIZE')}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DEVICE)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: (C {<mdconfig>} {<-a>} {<-f>} {($ Id.VSub_DollarName '$OUTPUT_FILE')})
              )
            }
          spids: [129]
        )
      ]
    )
    (C {<newfs_msdos>} {<-F>} {<12>} {<-L>} {<EFI>} {($ Id.VSub_DollarName '$DEVICE')})
    (C {<mkdir>} {<stub>})
    (C {<mount>} {<-t>} {<msdosfs>} {<'/dev/'> ($ Id.VSub_DollarName '$DEVICE')} {<stub>})
    (C {<mkdir>} {<-p>} {<'stub/efi/boot'>})
    (command.Pipeline
      children: [
        (C {<echo>} {(SQ <'Boot1 START'>)})
        (C {<dd>} {<Id.Lit_VarLike 'of='> <'stub/efi/boot/'> ($ Id.VSub_DollarName '$FILENAME')} 
          {<Id.Lit_VarLike 'cbs='> ($ Id.VSub_DollarName '$BOOT1_SIZE')} {<Id.Lit_VarLike 'count='> <1>} {<Id.Lit_VarLike 'conv='> <block>}
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<echo>} {($ Id.VSub_DollarName '$FILENAME')}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {<'stub/efi/boot/startup.nsh'>}
        )
      ]
      do_fork: T
    )
    (C {<umount>} {<stub>})
    (C {<mdconfig>} {<-d>} {<-u>} {($ Id.VSub_DollarName '$DEVICE')})
    (C {<rmdir>} {<stub>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BOOT1_OFFSET)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<hd>} {($ Id.VSub_DollarName '$OUTPUT_FILE')})
                      (C {<grep>} {(SQ <'Boot1 START'>)})
                      (C {<cut>} {<-f>} {<1>} {<-d>} {(SQ <' '>)})
                    ]
                    negated: F
                  )
              )
            }
          spids: [238]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BOOT1_OFFSET)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {<0x> ($ Id.VSub_DollarName '$BOOT1_OFFSET')})
                      (C {<awk>} {(SQ <'{printf("%x\\n",$1/512);}'>)})
                    ]
                    negated: F
                  )
              )
            }
          spids: [271]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_DollarName '$BOOT1_SIZE')}
      arms: [
        (case_arm
          pat_list: [{<Id.Lit_Star '*'> <k>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:BOOT1_MAXSIZE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<expr>} 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name BOOT1_SIZE>
                                suffix_op: (suffix_op.Unary tok:<Id.VOp1_Percent '%'> arg_word:{<k>})
                              )
                            } {(SQ <'*'>)} {<1024>}
                          )
                      )
                    }
                  spids: [302]
                )
              ]
            )
          ]
          spids: [297 299 320 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:BOOT1_MAXSIZE)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$BOOT1_SIZE')}
                  spids: [326]
                )
              ]
            )
          ]
          spids: [322 323 330 -1]
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {(SQ <'# This file autogenerated by generate-fat.sh - DO NOT EDIT'>)}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<Makefile.fat>})]
      do_fork: T
    )
    (command.Simple
      words: [
        {<echo>}
        {
          (DQ <'# '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <FreeBSD> 
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
          )
        }
      ]
      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<Makefile.fat>})]
      do_fork: T
    )
    (command.Simple
      words: [{<echo>} {(DQ <'BOOT1_OFFSET=0x'> ($ Id.VSub_DollarName '$BOOT1_OFFSET'))}]
      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<Makefile.fat>})]
      do_fork: T
    )
    (command.Simple
      words: [{<echo>} {(DQ <'BOOT1_MAXSIZE='> ($ Id.VSub_DollarName '$BOOT1_MAXSIZE'))}]
      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<Makefile.fat>})]
      do_fork: T
    )
    (C {<bzip2>} {($ Id.VSub_DollarName '$OUTPUT_FILE')})
    (command.Simple
      words: [{<echo>} {(SQ <'FAT template boot filesystem created by generate-fat.sh'>)}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$OUTPUT_FILE') <.bz2.uu>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<echo>} {(SQ <'DO NOT EDIT'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$OUTPUT_FILE') <.bz2.uu>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<echo>}
        {
          (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <FreeBSD> 
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
          )
        }
      ]
      redirects: [
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$OUTPUT_FILE') <.bz2.uu>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [
        {<uuencode>}
        {($ Id.VSub_DollarName '$OUTPUT_FILE') <.bz2>}
        {($ Id.VSub_DollarName '$OUTPUT_FILE') <.bz2>}
      ]
      redirects: [
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName '$OUTPUT_FILE') <.bz2.uu>}
        )
      ]
      do_fork: T
    )
    (C {<rm>} {($ Id.VSub_DollarName '$OUTPUT_FILE') <.bz2>})
  ]
)