(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:exec_text_addr) op:Equal rhs:{(0x0)} spids:[20])]
      spids: [20]
    )
    (FuncDef
      name: obj_load_addrs
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (SimpleCommand
                  words: [
                    {(setarch)}
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(uname)} {(-m)})])
                        left_token: <Left_CommandSub '$('>
                        spids: [37 43]
                      )
                    }
                    {(-R)}
                    {(sh)}
                    {(-c)}
                    {(SQ <'LD_TRACE_LOADED_OBJECTS=1 '>) (DQ ($ VSub_Number '$1'))}
                  ]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[58])]
                )
                (C {(grep)} {(SQ <'=>'>)})
                (C {(grep)} {(-v)} {(SQ <linux-vdso>)})
                (C {(grep)} {(-v)} {(SQ <'not found'>)})
                (C {(sed)} {(SQ <'s/.*=> //'>)})
                (C {(tr)} {(-d)} {(SQ <'()'>)})
                (C {(tr)} {(-s)} {(SQ <'[:blank:]'>)} {(SQ <'\\t'>)})
              ]
              negated: F
            )
            (C {(/bin/echo)} {(-n)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [(C {(readlink)} {(-f)} {(DQ ($ VSub_Number '$1'))})]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [133 143]
                  )
                )
              }
            )
            (C {(/bin/echo)} {(-e)} {(SQ <'\\t'>) (DQ (${ VSub_Name exec_text_addr))})
          ]
          spids: [32]
        )
      spids: [27 31]
    )
    (FuncDef
      name: mangle_objname
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [(C {(echo)} {(DQ ($ VSub_Number '$1'))}) (C {(tr)} {(SQ <'/ .-'>)} {(SQ <_>)})]
              negated: F
            )
          ]
          spids: [168]
        )
      spids: [163 167]
    )
    (FuncDef
      name: hex_to_dec
      body: 
        (BraceGroup
          children: [
            (C {(printf)} {(DQ ('%d'))} 
              {
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (Pipeline
                          children: [
                            (C {(echo)} {(DQ ($ VSub_Number '$1'))})
                            (C {(sed)} {(SQ <'s/^[^0][^xX].*/0x&/'>)})
                          ]
                          negated: F
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [213 229]
                )
              }
            )
          ]
          spids: [204]
        )
      spids: [199 203]
    )
    (FuncDef
      name: obj_load_addrs_as_cpp_macros
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(obj_load_addrs)} {(DQ ($ VSub_Number '$1'))})
                (C {(sort)})
                (While
                  cond: [(Sentence child:(C {(read)} {(obj)} {(base)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (C {(echo)} 
                          {
                            (DQ (-D__LOAD_ADDR_) 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(mangle_objname)} {(DQ (${ VSub_Name obj))})
                                          (C {(tr)} {(SQ <'[a-z]'>)} {(SQ <'[A-Z]'>)})
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [311 333]
                              )
                            ) (Lit_Other '=') (DQ (${ VSub_Name base) (ULL))
                          }
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:min_obj_load_addr)
                              op: Equal
                              rhs: {(0x2aaa00000000)}
                              spids: [348]
                            )
                          ]
                          spids: [348]
                        )
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (AndOr
                                      ops: [Op_DAmp]
                                      children: [
                                        (C {(Lit_Other '[')} 
                                          {
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [(C {(hex_to_dec)} {($ VSub_Name '$base')})]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [356 362]
                                            )
                                          } {(-lt)} 
                                          {
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [
                                                    (C {(hex_to_dec)} 
                                                      {($ VSub_Name '$min_obj_load_addr')}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [366 372]
                                            )
                                          } {(Lit_Other ']')}
                                        )
                                        (Pipeline
                                          children: [
                                            (C {(Lit_Other '[')} 
                                              {
                                                (CommandSubPart
                                                  command_list: 
                                                    (CommandList
                                                      children: [
                                                        (C {(hex_to_dec)} {($ VSub_Name '$base')})
                                                      ]
                                                    )
                                                  left_token: <Left_CommandSub '$('>
                                                  spids: [382 388]
                                                )
                                              } {(-eq)} 
                                              {
                                                (CommandSubPart
                                                  command_list: 
                                                    (CommandList
                                                      children: [
                                                        (C {(hex_to_dec)} 
                                                          {(${ VSub_Name exec_text_addr)}
                                                        )
                                                      ]
                                                    )
                                                  left_token: <Left_CommandSub '$('>
                                                  spids: [392 400]
                                                )
                                              } {(Lit_Other ']')}
                                            )
                                          ]
                                          negated: T
                                        )
                                      ]
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (SimpleCommand
                                  words: [
                                    {(echo)}
                                    {
                                      (DQ ('Warning: library ') ($ VSub_Name '$obj') 
                                        (' has a load address ') ($ VSub_Name '$base') (' less than the assumed minimum ') ($ VSub_Name '$min_obj_load_addr')
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_GreatAnd
                                      fd: 1
                                      arg_word: {(2)}
                                      spids: [419]
                                    )
                                  ]
                                )
                              ]
                              spids: [16777215 405]
                            )
                          ]
                          spids: [16777215 423]
                        )
                      ]
                      spids: [295 426]
                    )
                )
              ]
              negated: F
            )
          ]
          spids: [239]
        )
      spids: [234 238]
    )
  ]
)