(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:pcprofileso)
          op: Equal
          rhs: {(SQ <'@SLIBDIR@/libpcprofile.so'>)}
          spids: [49]
        )
      ]
      spids: [49]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:pcprofiledump)
          op: Equal
          rhs: {(SQ <'@BINDIR@/pcprofiledump'>)}
          spids: [54]
        )
      ]
      spids: [54]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:TEXTDOMAIN) op:Equal rhs:{(libc)} spids:[59])]
      spids: [59]
    )
    (FuncDef
      name: do_usage
      body: 
        (BraceGroup
          children: [
            (C {(printf)} 
              {(DQ ('Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...') (Lit_Other '\\') (n))}
            )
            (C {(exit)} {(0)})
          ]
          spids: [70]
        )
      spids: [66 69]
    )
    (FuncDef
      name: help_info
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [
                {(printf)}
                {
                  (DQ ('Try ') (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ("%s --help' or ") 
                    (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ("%s --usage' for more information.") (Lit_Other '\\') (n)
                  )
                }
                {(xtrace)}
                {(xtrace)}
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[101])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [96]
        )
      spids: [92 95]
    )
    (FuncDef
      name: do_missing_arg
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [
                {(printf)}
                {(DQ ("%s: option '%s' requires an argument.") (Lit_Other '\\') (n))}
                {(xtrace)}
                {(DQ ($ VSub_Number '$1'))}
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[138])]
            )
            (C {(help_info)})
          ]
          spids: [133]
        )
      spids: [129 132]
    )
    (FuncDef
      name: do_help
      body: 
        (BraceGroup
          children: [
            (C {(printf)} 
              {(DQ ('Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...') (Lit_Other '\\') (n))}
            )
            (C {(printf)} 
              {
                (DQ ('Trace execution of program by printing currently executed function.\n') ('\n') 
                  (
"     --data=FILE          Don't run the program, just print the data from FILE.\n"
                  ) ('\n') ('   -?,--help              Print this help and exit\n') 
                  ('      --usage             Give a short usage message\n') ('   -V,--version           Print version information and exit\n') ('\n') 
                  (
'Mandatory arguments to long options are also mandatory for any corresponding\n'
                  ) ('short options.\n') ('\n')
                )
              }
            )
            (C {(printf)} 
              {
                (DQ ('For bug reporting instructions, please see:') 
                  (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) ('n%s.') (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (n)
                )
              } {(DQ ('@REPORT_BUGS_TO@'))}
            )
            (C {(exit)} {(0)})
          ]
          spids: [166]
        )
      spids: [162 165]
    )
    (FuncDef
      name: do_version
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(SQ <'xtrace @PKGVERSION@@VERSION@'>)})
            (C {(printf)} 
              {
                (DQ ('Copyright (C) %s Free Software Foundation, Inc.\n') 
                  ('This is free software; see the source for copying conditions.  There is NO\n') ('warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n')
                )
              } {(DQ (2016))}
            )
            (C {(printf)} {(DQ ('Written by %s.\n'))} {(DQ ('Ulrich Drepper'))})
            (C {(exit)} {(0)})
          ]
          spids: [223]
        )
      spids: [219 222]
    )
    (FuncDef
      name: format_line
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:fct)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [274]
                )
              ]
              spids: [274]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:file)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(':*')})
                        spids: [279 283]
                      )
                    }
                  spids: [278]
                )
              ]
              spids: [278]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:line)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 2>
                        suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*:')})
                        spids: [287 291]
                      )
                    }
                  spids: [286]
                )
              ]
              spids: [286]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:width)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(expr)} {($ VSub_Name '$COLUMNS')} {(-)} {(30)})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [295 303]
                      )
                    }
                  spids: [294]
                )
              ]
              spids: [294]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:filelen)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(expr)} {(length)} {($ VSub_Name '$file')})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [307 313]
                      )
                    }
                  spids: [306]
                )
              ]
              spids: [306]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(test)} {(DQ ($ VSub_Name '$filelen'))} {(-gt)} {(DQ ($ VSub_Name '$width'))})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rwidth)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(expr)} {($ VSub_Name '$width')} {(-)} {(3)})]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [335 343]
                              )
                            }
                          spids: [334]
                        )
                      ]
                      spids: [334]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:file)
                          op: Equal
                          rhs: 
                            {
                              (DQ (...) 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [
                                        (C {(expr)} {(substr)} {($ VSub_Name '$file')} 
                                          {
                                            (CommandSubPart
                                              command_list: 
                                                (CommandList
                                                  children: [
                                                    (C {(expr)} {(1)} {(Lit_Other '+')} 
                                                      {($ VSub_Name '$filelen')} {(-)} {($ VSub_Name '$rwidth')}
                                                    )
                                                  ]
                                                )
                                              left_token: <Left_CommandSub '$('>
                                              spids: [356 368]
                                            )
                                          } {($ VSub_Name '$rwidth')}
                                        )
                                      ]
                                    )
                                  left_token: <Left_CommandSub '$('>
                                  spids: [349 371]
                                )
                              )
                            }
                          spids: [346]
                        )
                      ]
                      spids: [346]
                    )
                  ]
                  spids: [16777215 331]
                )
              ]
              spids: [16777215 375]
            )
            (C {(printf)} {(SQ <'%-20s  %-*s  %6s\\n'>)} {($ VSub_Name '$fct')} {($ VSub_Name '$width')} 
              {($ VSub_Name '$file')} {($ VSub_Name '$line')}
            )
          ]
          spids: [271]
        )
      spids: [267 270]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:COLUMNS)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name COLUMNS>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(80)})
                spids: [400 404]
              )
            }
          spids: [399]
        )
      ]
      spids: [399]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TERMINAL_PROG)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name TERMINAL_PROG>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(xterm)})
                spids: [411 415]
              )
            }
          spids: [410]
        )
      ]
      spids: [410]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:data) op:Equal rhs:{(SQ )} spids:[421])]
      spids: [421]
    )
    (While
      cond: [
        (Sentence
          child: (C {(test)} {($ VSub_Pound '$#')} {(-gt)} {(0)})
          terminator: <Op_Semi ';'>
        )
      ]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(--d)} {(--da)} {(--dat)} {(--data)}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: (C {(test)} {($ VSub_Pound '$#')} {(-eq)} {(1)})
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [(C {(do_missing_arg)} {($ VSub_Number '$1')})]
                          spids: [16777215 477]
                        )
                      ]
                      spids: [16777215 485]
                    )
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:data)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number '$1'))}
                          spids: [491]
                        )
                      ]
                      spids: [491]
                    )
                  ]
                  spids: [450 463 497 16777215]
                )
                (case_arm
                  pat_list: [
                    {(--d) (Lit_Other '=') (Lit_Other '*')}
                    {(--da) (Lit_Other '=') (Lit_Other '*')}
                    {(--dat) (Lit_Other '=') (Lit_Other '*')}
                    {(--data) (Lit_Other '=') (Lit_Other '*')}
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:data)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Number 1>
                                suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*=')})
                                spids: [525 529]
                              )
                            }
                          spids: [524]
                        )
                      ]
                      spids: [524]
                    )
                  ]
                  spids: [500 521 532 16777215]
                )
                (case_arm
                  pat_list: [
                    {(-) (EscapedLiteralPart token:<Lit_EscapedChar '\\?'>)}
                    {(--h)}
                    {(--he)}
                    {(--hel)}
                    {(--help)}
                  ]
                  action: [(C {(do_help)})]
                  spids: [535 553 559 16777215]
                )
                (case_arm
                  pat_list: [
                    {(-V)}
                    {(--v)}
                    {(--ve)}
                    {(--ver)}
                    {(--vers)}
                    {(--versi)}
                    {(--versio)}
                    {(--version)}
                  ]
                  action: [(C {(do_version)})]
                  spids: [562 591 597 16777215]
                )
                (case_arm
                  pat_list: [{(--u)} {(--us)} {(--usa)} {(--usag)} {(--usage)}]
                  action: [(C {(do_usage)})]
                  spids: [600 617 623 16777215]
                )
                (case_arm
                  pat_list: [{(--)}]
                  action: [(C {(shift)}) (ControlFlow token:<ControlFlow_Break break>)]
                  spids: [626 627 640 16777215]
                )
                (case_arm
                  pat_list: [{(--) (Lit_Other '*')}]
                  action: [
                    (SimpleCommand
                      words: [
                        {(printf)}
                        {
                          (DQ ('xtrace: unrecognized option ') 
                            (EscapedLiteralPart
                              token: <Lit_EscapedChar '\\`'>
                            ) ($ VSub_Number '$1') ("'") (Lit_Other '\\') (n)
                          )
                        }
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[650])]
                    )
                    (C {(help_info)})
                  ]
                  spids: [643 645 666 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                  spids: [669 670 680 16777215]
                )
              ]
              spids: [441 447 683]
            )
            (C {(shift)})
          ]
          spids: [438 688]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {($ VSub_Pound '$#')} {(-eq)} {(0)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [{(printf)} {(DQ ('No program name given') (Lit_Other '\\') (n))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[710])]
            )
            (C {(help_info)})
          ]
          spids: [16777215 705]
        )
      ]
      spids: [16777215 722]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:program)
          op: Equal
          rhs: {($ VSub_Number '$1')}
          spids: [728]
        )
      ]
      spids: [728]
    )
    (C {(shift)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$program'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [
                {(printf)}
                {
                  (DQ ('executable ') (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) 
                    ($ VSub_Name '$program') ("' not found") (Lit_Other '\\') (n)
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[751])]
            )
            (C {(help_info)})
          ]
          spids: [16777215 746]
        )
      ]
      spids: [16777215 766]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(KW_Bang '!')} {(-x)} {(DQ ($ VSub_Name '$program'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [
                {(printf)}
                {
                  (DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ($ VSub_Name '$program') 
                    ("' is no executable") (Lit_Other '\\') (n)
                  )
                }
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[786])]
            )
            (C {(help_info)})
          ]
          spids: [16777215 781]
        )
      ]
      spids: [16777215 800]
    )
    (C {(printf)} {(DQ ('%-20s  %-*s  %6s') (Lit_Other '\\') (n))} {(Function)} 
      {
        (CommandSubPart
          command_list: (CommandList children:[(C {(expr)} {($ VSub_Name '$COLUMNS')} {(-)} {(30)})])
          left_token: <Left_CommandSub '$('>
          spids: [816 824]
        )
      } {(File)} {(Line)}
    )
    (Sentence
      child: 
        (ForEach
          iter_name: i
          iter_words: [
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(seq)} {(1)} {($ VSub_Name '$COLUMNS')})])
                left_token: <Left_CommandSub '$('>
                spids: [836 842]
              )
            }
          ]
          do_arg_iter: False
          body: 
            (DoGroup
              children: [(Sentence child:(C {(printf)} {(-)}) terminator:<Op_Semi ';'>)]
              spids: [845 852]
            )
          spids: [835 843]
        )
      terminator: <Op_Semi ';'>
    )
    (C {(printf)} {(SQ <'\\n'>)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(-n)} {(DQ ($ VSub_Name '$data'))})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Pipeline
              children: [
                (C {($ VSub_Name '$pcprofiledump')} {(DQ ($ VSub_Name '$data'))})
                (C {(sed)} {(SQ <'s/this = \\([^,]*\\).*/\\1/'>)})
                (C {(addr2line)} {(-fC)} {(-e)} {(DQ ($ VSub_Name '$program'))})
                (While
                  cond: [(Sentence child:(C {(read)} {(fct)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (C {(read)} {(file)})
                        (If
                          arms: [
                            (if_arm
                              cond: [
                                (Sentence
                                  child: 
                                    (C {(test)} {(DQ ($ VSub_Name '$fct'))} 
                                      {(KW_Bang '!') (Lit_Other '=')} {(SQ <'??'>)} {(-a)} {(DQ ($ VSub_Name '$file'))} {(KW_Bang '!') (Lit_Other '=')} {(SQ <'??:0'>)}
                                    )
                                  terminator: <Op_Semi ';'>
                                )
                              ]
                              action: [
                                (C {(format_line)} {(DQ ($ VSub_Name '$fct'))} 
                                  {(DQ ($ VSub_Name '$file'))}
                                )
                              ]
                              spids: [16777215 950]
                            )
                          ]
                          spids: [16777215 964]
                        )
                      ]
                      spids: [913 967]
                    )
                )
              ]
              negated: False
            )
          ]
          spids: [16777215 872]
        )
      ]
      else_action: [
        (AndOr
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:fifo)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(mktemp)} {(-ut)} {(xtrace.XXXXXX)})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [973 979]
                      )
                    }
                  spids: [972]
                )
              ]
              spids: [972]
            )
            (C {(exit)})
          ]
          op_id: Op_DPipe
        )
        (C {(trap)} {(SQ <'rm -f "$fifo"; exit 1'>)} {(HUP)} {(INT)} {(QUIT)} {(TERM)} {(PIPE)})
        (AndOr
          children: [(C {(mkfifo)} {(-m)} {(0600)} {($ VSub_Name '$fifo')}) (C {(exit)} {(1)})]
          op_id: Op_DPipe
        )
        (Sentence
          child: 
            (C {($ VSub_Name '$TERMINAL_PROG')} {(-T)} 
              {(DQ ('xtrace - ') ($ VSub_Name '$program') (' ') ($ VSub_Star '$*'))} {(-e)} {(/bin/sh)} {(-c)} 
              {
                (DQ ('LD_PRELOAD=') ($ VSub_Name '$pcprofileso') (' PCPROFILE_OUTPUT=') 
                  ($ VSub_Name '$fifo') (' ') ($ VSub_Name '$program') (' ') ($ VSub_Star '$*') ('; read < ') ($ VSub_Name '$fifo')
                )
              }
            )
          terminator: <Op_Amp '&'>
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:termpid)
              op: Equal
              rhs: {($ VSub_Bang '$!')}
              spids: [1056]
            )
          ]
          spids: [1056]
        )
        (Pipeline
          children: [
            (C {($ VSub_Name '$pcprofiledump')} {(-u)} {(DQ ($ VSub_Name '$fifo'))})
            (While
              cond: [(Sentence child:(C {(read)} {(line)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (Pipeline
                      children: [
                        (C {(echo)} {(DQ ($ VSub_Name '$line'))})
                        (C {(sed)} {(SQ <'s/this = \\([^,]*\\).*/\\1/'>)})
                        (C {(addr2line)} {(-fC)} {(-e)} {(DQ ($ VSub_Name '$program'))})
                      ]
                      negated: False
                    )
                  ]
                  spids: [1078 1110]
                )
            )
            (While
              cond: [(Sentence child:(C {(read)} {(fct)}) terminator:<Op_Semi ';'>)]
              body: 
                (DoGroup
                  children: [
                    (C {(read)} {(file)})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(test)} {(DQ ($ VSub_Name '$fct'))} {(KW_Bang '!') (Lit_Other '=')} 
                                  {(SQ <'??'>)} {(-a)} {(DQ ($ VSub_Name '$file'))} {(KW_Bang '!') (Lit_Other '=')} {(SQ <'??:0'>)}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (C {(format_line)} {(DQ ($ VSub_Name '$fct'))} {(DQ ($ VSub_Name '$file'))})
                          ]
                          spids: [16777215 1159]
                        )
                      ]
                      spids: [16777215 1173]
                    )
                  ]
                  spids: [1122 1176]
                )
            )
          ]
          negated: False
        )
        (C {(read)} {(-p)} 
          {
            (DQ ('Press return here to close ') ($ VSub_Name '$TERMINAL_PROG') ('(') 
              ($ VSub_Name '$program') (').')
            )
          }
        )
        (SimpleCommand
          words: [{(echo)}]
          redirects: [
            (Redir
              op_id: Redir_Great
              fd: 16777215
              arg_word: {(DQ ($ VSub_Name '$fifo'))}
              spids: [1194]
            )
          ]
        )
        (C {(rm)} {(DQ ($ VSub_Name '$fifo'))})
      ]
      spids: [969 1207]
    )
    (C {(exit)} {(0)})
  ]
)