(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<1>} {<Id.Lit_RBracket ']'>})
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Usage: '> ($ Id.VSub_Number '$0') <' <executable> [0x... [0x... ] ]'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [4 16]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PATH)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$PATH') <Id.Lit_Colon ':'> <'/usr/gnu/bin'>}
          spids: [34]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      children: [
                        (C {<file>} {($ Id.VSub_Number '$1')})
                        (command.Simple
                          words: [{<grep>} {<NSYM>}]
                          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
                        )
                      ]
                      negated: F
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NM)
                  op: assign_op.Equal
                  rhs: {(DQ <'gnm --radix=d'>)}
                  spids: [62]
                )
              ]
            )
          ]
          spids: [40 59]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:NM)
              op: assign_op.Equal
              rhs: {(DQ <'nm -d'>)}
              spids: [70]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:executable)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [78]
        )
      ]
    )
    (C {<shift>})
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>})
          ]
        )
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dec)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: (C {<printf>} {<Id.Lit_Other '%'> <d>} {($ Id.VSub_Number '$1')})
                        )
                      )
                    }
                  spids: [98]
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {($ Id.VSub_DollarName '$NM')} {<-n>} {($ Id.VSub_DollarName '$executable')})
                (C {<grep>} {(SQ <' [Tt] '>)})
                (C {<awk>} 
                  {(SQ <'\n'> <'\t  {  if($1 > '>) ($ Id.VSub_DollarName '$dec') 
                    (SQ <') { printf "%s+0x%x\\n", name, '>) ($ Id.VSub_DollarName '$dec') (SQ <'-offset; exit }\n'> <'\t     name=$3; offset=$1\n'> <'\t  }'>)
                  }
                )
              ]
              negated: F
            )
            (C {<shift>})
          ]
        )
    )
  ]
)